Matplotlib 是 Python 中最受欢迎的数据可视化软件包之一,支持跨平台运行,它是 Python 常用的 2D 绘图库,同时它也提供了一部分 3D 绘图接口。Matplotlib 通常与 NumPy、Pandas 一起使用,是数据分析中不可或缺的重要工具之一。
参考代码
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline
# 横轴为时间,需要将转换为时间类型
import datetime
# 打开并读取excel文件
io1 = r'E:\table1.xlsx'
io2 = r'E:\table2.xlsx'
# sheet_name: 第几张表,也可以是表名(string)
data1 = pd.read_excel(io1, sheet_name=1)
data2 = pd.read_excel(io2, sheet_name=1)
time | ID_stations1 | ID_stations2 | … |
---|---|---|---|
时间1 | value1.1 | value2.1 | … |
时间2 | value1.2 | value2.2 | … |
… | … | … | … |
# 两张表的时间范围(横轴)相同,任意选择一个转换为时间datetime
data1的时间列为time1
times = data1['time1']
dates = []
for time in times:
# time1 记录的格式为20220324(int)对应'%Y%m%d'
# time2 记录的格式为'2022_03'对应格式为'%Y_%m', datetime自动填充日(d)为1
date = datetime.datetime.strptime(str(time),'%Y%m%d').date()
dates.append(date)
# 两张表站点相同,读取第一行变量名
stations = np.array(data1.columns)
# 除去第一例time,其余列为要绘制的28个站点的ID号
stations = stations[1:29]
# 绘图
count = 0 # 统计图的数量
# 创建新图型,设置整个图的大小
fig = plt.figure(figsize=(80,30))
# 一个站点一张图
for station in stations:
# 读取的值为string,转为两张表中存储的int
s = int(station)
s1 = np.array(data1[s])
s2 = np.array(era_data[s])
# 字典存入数据框
value1 = pd.DataFrame( data={'date': dates, 'value': value1})
value2 = pd.DataFrame( data={'date': dates, 'value': value2})
# 4行7列,add_subplot添加子图(几行,几列,第几张图)
fig.add_subplot(4, 7, count + 1)
# 一张图中多条折线:x轴相同,y轴不同
plt.plot(dates, value1['value'], 'b-',linewidth=1)
plt.plot(dates, value2['value'], 'r--',linewidth=1)
# 每张图的标题
plt.title(station)
# 画完一张图+1
count += 1
# 保存图片
fig.savefig('E:\\test.png')
图例图fig.lengend()
可以参考:matplotlib—在figure中为多幅子图添加一个legend(图例)
文章出处登录后可见!
已经登录?立即刷新