pandas+matplotlib画图,两张图叠加

参考链接:https://blog.csdn.net/o1101574955/article/details/51623018

《python数据分析与挖掘实战》原书上的例子:

1
2
3
4
5
6
7
8
9
10
11
12
13
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd

plt.rcParams['font.sans-serif'] = ['SimHei'] #用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False #用来正常显示负号
x=pd.Series(np.exp(np.arange(20)))
x.plot(label=u'原始数据图',legend=True)
plt.grid(True)
plt.show()
x.plot(logy=True,label=u'对数数据图',legend=True) #这个函数里的参数logy=True时,是以10为底的
plt.grid(True)
plt.show()

效果图如下:

1

2

现在想把它俩画在一张图上,是可以画一起的,但是,图例没法显示出来,最后查了官网的资料,需要使用using-proxy-artist ,代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import matplotlib.lines as mlines
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd

plt.rcParams['font.sans-serif'] = ['SimHei'] #用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False #用来正常显示负号
plt.figure()
x=pd.Series(np.exp(np.arange(20)))
p1=x.plot(label=u'原始数据图')
plt.ylabel('正常坐标')
x2=pd.Series(np.log10(x)) #np.log()是以e为底的
p2=x2.plot(secondary_y=True,style='--',color='r',)
plt.yticks(plt.yticks()[0],['$10^%d$'%w for w in range(len(plt.yticks()[0]))])
#x.plot(logy=True,label=u'对数数据图',legend=True,secondary_y=True,style='--',color='r') #这里不能用这个,因为它会同时改变图中的x坐标轴和y坐标轴
plt.ylabel('指数坐标')
blue_line = mlines.Line2D([],[],linestyle='-',color='blue',markersize=2, label=u'原始数据图')
red_line= mlines.Line2D([],[],linestyle='--',color='red',markersize=2, label=u'对数数据图')
plt.legend(handles=[blue_line,red_line],loc='upper left')
plt.grid(True)
plt.show()

效果如下:

3


pandas+matplotlib画图,两张图叠加
https://fulequn.github.io/2020/09/Article202009265/
作者
Fulequn
发布于
2020年9月26日
许可协议