Python读取Excel表格文件并绘制多列数据的曲线图

  本文介绍基于Python语言,读取Excel表格数据,并基于给定的行数范围内的指定列数据,绘制多条曲线图,并动态调整图片长度的方法。

  首先,我们来明确一下本文的需求。现有一个.csv格式的Excel表格文件,其第一列为表示时间的数据,而靠后的几列,也就是下图中紫色区域内的列,则是表示对应日期的属性的数据;如下图所示。

  其中,第一列是一个表示时间循环增长的列,其数值从2023001开始,到2023365结束,然后会继续再从2023001开始,以此类推;并且每一个循环中,有些日期可能会缺失,即并不是每天都有数据的。

  我们现在希望,对于给定的行数起始值结束值(已知这个起始值与结束值对应的第一列数据,肯定是一个完整的时间循环),基于表格中后面带有数据的几列(也就是上图中紫色区域内的数据),绘制曲线图;并且由于这几列数据所表示的含义不同,希望用不同颜色、不同线型来表示每一列的数据。其中,我们希望具体绘制的结果如下图所示。

  可以看到,横坐标就是表示时间的数据,纵坐标就是那几列含有数据的列;此外,还需要注意,前面也提到了,时间数据是不断循环的,而每一个循环中时间的数量是不确定的。因此,我们还希望绘制出来的图片,可以根据循环中时间的数量(或者说是循环的长度),来动态调整其长度

  明确了需求,即可开始撰写代码。本文所用代码如下。

# -*- coding: utf-8 -*-"""
Created on Wed May 15 10:34:17 2024@author: fkxxgis
"""import os
import pandas as pd
import matplotlib.pyplot as pltcsv_file = r"E:\04_Reconstruction\99_MODIS\Train_Model_0715_Main_Combine.csv"
pic_folder = r"E:\04_Reconstruction\99_MODIS\pic"
idx_start = 520351
idx_end = 520389df = pd.read_csv(csv_file)
selected_data = df.iloc[idx_start : idx_end]time = selected_data.iloc[:, 0]
time_x = range(len(time))blue_pre = selected_data.iloc[:, 9]
blue_tru = selected_data.iloc[:, 10]
green_pre = selected_data.iloc[:, 11]
green_tru = selected_data.iloc[:, 12]
red_pre = selected_data.iloc[:, 13]
red_tru = selected_data.iloc[:, 14]
nir_pre = selected_data.iloc[:, 15]
nir_tru = selected_data.iloc[:, 16]
ndvi_pre = selected_data.iloc[:, 17]
ndvi_tru = selected_data.iloc[:, 18]plt.figure(figsize = ((idx_end - idx_start) * 0.45, 5))plt.plot(time_x, blue_pre, 'b-', label = "Blue Predict")
plt.plot(time_x, blue_tru, 'b--', label = "Blue Actual")
plt.plot(time_x, green_pre, '-', color = "lime", label = "Green Predict")
plt.plot(time_x, green_tru, '--', color = "lime", label = "Green Actual")
plt.plot(time_x, red_pre, 'r-', label = "Red Predict")
plt.plot(time_x, red_tru, 'r--', label = "Red Actual")
plt.plot(time_x, nir_pre, '-', color = "orange", label = "NIR Predict")
plt.plot(time_x, nir_tru, '--', color = "orange", label = "NIR Actual")
plt.plot(time_x, ndvi_pre, '-', color = "darkgreen", label = "NDVI Predict")
plt.plot(time_x, ndvi_tru, '--', color = "darkgreen", label = "NDVI Actual")plt.rc("font", family = "Times New Roman")
plt.legend(ncol = 2)
plt.xticks(time_x, time, rotation = 45)plt.savefig(os.path.join(pic_folder, str(idx_start) + "_" + str(idx_end)), dpi = 300, bbox_inches = "tight", pad_inches = 0.05)
plt.show()

  其中,我们首先导入必要的库。os用于处理文件路径,pandas用于读取和处理表格文件数据,matplotlib.pyplot用于绘制图表。

  接下来,我们定义文件路径和索引范围。csv_file表示输入.csv格式文件的路径,pic_folder表示输出图片的文件路径,idx_start表示数据的起始索引,idx_end表示数据的结束索引。

  接下来,我们读取.csv格式文件并选择指定范围的数据。df = pd.read_csv(csv_file)表示读取.csv格式文件并创建DataFrame,而后通过selected_data = df.iloc[idx_start : idx_end]选择指定索引范围的数据,也就是处于指定行数内的数据;time就是第一列数据,也就是一个循环内的时间序列,time_x则用于显示图片的x轴刻度——之所以需要这个,是因为我这里希望用字符的形式来表示图片中x轴的刻度(如果用数字的话,那么相当于一年365天对应的x轴长度都是固定的365个刻度;而对于时相缺失比较多的循环,这样绘制出来的图不好看)。随后,分别提取本文开头图片中紫色框内的数据,其分别表示蓝色、绿色、红色、近红外和NDVI的预测值和实际值。

  随后,即可绘制曲线图。首先,通过plt.figure(figsize = ((idx_end - idx_start) * 0.45, 5))动态设置图片尺寸,使用plt.plot()函数绘制每个指标的预测值和实际值;同时,设置图例、x轴刻度旋转等属性,并保存图片;最后,通过plt.show()显示绘制的图片。

  运行上述代码,即可获得本文开头第二幅图所示的图片结果。

  至此,大功告成。

欢迎关注:疯狂学习GIS

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/335028.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

将本地项目上传到 gitee 仓库

1、创建 gitee 仓库 到 gitee 官网,新建仓库 配置新建仓库 完成仓库的创建 项目上传到仓库 上传项目需要安装git git官方下载地址:git下载地址 安装完成,前往本地项目所在文件夹,右击选择 Git Bash Here 刚下载完成需要配置G…

【全开源】Java养老护理助浴陪诊小程序医院陪护陪诊小程序APP源码

打造智慧养老服务新篇章 一、引言:养老护理的数字化转型 随着老龄化社会的到来,养老护理需求日益凸显。为了更好地满足老年人及其家庭的需求,我们推出了养老护理助浴陪诊小程序系统源码。该系统源码旨在通过数字化技术,优化养老…

语音控制系统的安全挑战与防御策略(上)

语音控制系统(VCS)提供了便捷的用户界面,涉及智能家居、自动驾驶汽车、智能客服等众多应用场景,已成为现代智能设备不可或缺的一部分。其市场规模预计到2023年达到70亿美元,这种扩张带来了重大的安全挑战,如…

走进智慧仓储:3D可视化工厂园区革新物流新纪元

在快节奏的现代生活中,物流仓储行业扮演着至关重要的角色。随着科技的飞速发展,传统仓储模式正面临一场前所未有的变革。今天,就让我们一起看看3D可视化技术如何为物流行业带来前所未有的便利与效率。 什么是3D可视化工厂园区? 3…

第13章 层次式架构设计理论与实践

层次式架构的核心思想是将系统组成为一种层次结构,每一层为上层服务,并作为下层客户。其实不管是分层还是其他的架构都是为了解耦,更好的复用,只要秉承着这种思想去理解一切都迎刃而解了。 13.1 层次上体系结构概述 回顾一下软件…

服务器数据恢复—EVA存储异常断电重启后虚拟机无法启动如何恢复数据?

服务器存储数据恢复环境: 某品牌EVA8400,服务器上安装VMware ESXi虚拟化平台,虚拟机的虚拟磁盘包括数据盘(精简模式)快照数据盘,部分虚拟机中运行oracle数据库和mysql数据库。 服务器存储故障&检测&…

python--pycharm中将venv删除后怎么办

在终端中输入以下命令来创建一个新的虚拟环境(可选): python -m venv venv 激活虚拟环境: Windows: .\venv\Scripts\activate选择自己项目的虚拟环境

一款颜值颇高的虚拟列表!差点就被埋没了,终于还是被我挖出来了

大家好,我是晓衡! 今天,推荐一款颇有颜值的虚拟列表组件,不然真的被埋没就可惜了! 我们先来看下效果: 感觉怎么样?还不错吧! 为什么说这个资源差点被埋没呢?因为个朋友找…

visual studis 安装教程

1、下载软件 2、直接安装。根据自己的需求选择需要的模板类型。 如果是.net环境,可以选择.net项目; 如果是c环境,可以选择c项目模板,多个模板可以同时并存。 3、选择C模板,然后重新启动项目。 我是小路,一枚…

python基础知识:py文件转换为jupyter文件

搜索了很多,都没什么用,会出现一些json错误,最终直接新建文件成功: 在自己电脑安装Anaconda,安装jupyter notebook,输入命令打开jupyter notebook: 在Anoconda命令行中cd到自己要转换文件的地址&#xff0…

【Android14 ShellTransitions】(一)开篇

说来惭愧,AndroidU都已经开发这么久了,但是我还没有整理过ShellTransition相关的知识。我本来希望能够系统的写一篇关于ShellTransition的笔记出来,但是发现一来这是一个比较庞大的模块,二来我个人能力有限,对ShellTra…

Tomcat端口配置

Tomcat是开源免费的服务器,其默认的端口为8080,本文讲述一下如何配置端口。 最后在浏览器中输入localhost:8888即可打开Tomcat界面

微信小程序中使用vantUI步骤

第一步,配置project.config.json 在setting中新增如下: "packNpmManually": true,"packNpmRelationList": [{"packageJsonPath": "./package.json","miniprogramNpmDistDir": "./"}], 第…

前端响应式期末作品

网页设计成品_前端响应式 主题:租房网站,共6个html页面,包含首页,登录注册,租房新闻,租房精选,租房详情,数据可视化页面(可以修改内容) 采用技术:…

河北奥润顺达集团研究院PMO经理常江南受邀为第十三届中国PMO大会演讲嘉宾

全国PMO专业人士年度盛会 河北奥润顺达集团研究院PMO经理、研发部运营管理办负责人常江南先生受邀为PMO评论主办的2024第十三届中国PMO大会演讲嘉宾,演讲议题为“初建PMO的体系宣贯和人员培养实践总结”。大会将于6月29-30日在北京举办,敬请关注&#xf…

香橙派 AiPro通过Micro USB接口进行串口调试

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、配置步骤1.安装CH343驱动2.配置串口参数 二、使用步骤总结 前言 最近在玩一个新玩具香橙派 AiPro,除了通过SSH方式连接开发板以外,…

Spring Security入门

一、Spring Security快速入门 官方文档: Spring Security :: Spring Security 功能: 身份认证(authentication)授权(authorization)防御常见攻击(protection against common attacks&#x…

RSC英国皇家化学学会文献查找下载

英国皇家化学学会(Royal Society of Chemistry,简称RSC)是以促进全球化学领域研究发展与传播为宗旨的国际权威学术机构,是化学信息的一个重要宣传机关和出版商。RSC出版的期刊是化学领域的核心期刊,大部分被SCI和MEDLINE收录,如An…

数字化校园的特征

"数字化校园"是校园信息化进入高级阶段的表现形式,信息技术与教育教育的交融应该更深化。因而,数字化校园应该具以下特征: 1.互联网络高速发展 网络是信息时代的根基,没有网络就无法完成教育信息化的绝大部分作业。数字…

Ownips+Coze海外社媒数据分析实战指南

目录 一、引言二、ISP代理简介三、应用实践——基于Ownips和coze的社媒智能分析助手3.1、Twitter趋势数据采集3.1.1、Twitter趋势数据接口分析3.1.2、Ownips原生住宅ISP选取与配置3.1.3、数据采集 3.2、基于Ownips和Coze的社媒智能助手3.2.1、Ownips数据采集插件集成3.2.2、创建…