您的位置:首页 > 编程语言 > Python开发

[置顶] python绘制双Y轴时间序列数据曲线图

2018-03-09 15:56 681 查看
花了一天摸索出来的,在python上面画双Y轴的时间序列数据的曲线图。网上大多数绘制双Y轴曲线图的不是时间序列曲线图。我这里用到两个包,pandas和matplotlib.pyplot包。画时间序列的时候,用pandas包的method,结合plt包使用,这个就需要我的数据以pd.Series或者pd.DataFrame形式保存。
series 或者 dataframe 可能需要有日期作为index,才能显示到横轴上面。#绘制时间序列数据的双Y轴图
import pandas as pd
import matplotlib.pyplot as plt

mpl.rcParams['axes.unicode_minus']=False #用来正常显示负号 #有效
mpl.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签 #interactive mode(选中点F9)有效,script mode(三角形run)无效

#假设我们有三个series,series1的数据范围和series2、series3的数据范围差异较大,或者scale差异较大,需要双Y轴去画。

fig,left_axis=plt.subplots(figsize = (26,16))
#建立一个大型的空白图。
#这是用了plt包的method。
series1.plot(color = 'red')
#画第一条时间序列数据,左轴。
#这个是用了pd包的method plot。
plt.legend(labels = [u"series1曲线名字_左轴"], loc = 'upper left', fontsize=16)
#加上左轴曲线画的时间序列名称
#曲线名字后面加上左轴,表示该颜色曲线刻度在左边。
#左轴的legend放在左边,下面右轴的legend可以放在右边。不要放在同一个位置就可以。可以自己安排。

#开始画右轴,画两条曲线
right_axis = left_axis.twinx()
series2.plot(color = 'blue')
series3.plot(color ='magenta' )
label = [u"series2曲线名字_右轴", u"series3曲线名字_右轴"]
plt.legend(label, loc = 'upper right', fontsize =16, ncol = 2)

plt.title(u"显示在图片上方的图片名称", fontsize =18)
plt.savefig(u"保存在本地的图片文件的名称.png")
plt.close()
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: