I have this data frame:
import pandas as pd
In:
df= pd.DataFrame({'Date':['2007-01-01 07:14:00','2007-01-01
07:25:00','2007-01-01 08:00:00','2007-01-01 09:14:00','2007-01-01
09:33:12'],'sent':[-0.32,0.34,-0.45,0.7,0.22],'var1':
[114,115,111,112,113],
'var2':[110,111,115,112,109]})
print(df)
_____________________________________
out:
Date sent var1 var2
0 2007-01-01 07:14:00 -0.32 114 110
1 2007-01-01 07:25:00 0.34 115 111
2 2007-01-01 08:00:00 -0.45 111 115
3 2007-01-01 09:14:00 0.70 112 112
4 2007-01-01 09:33:12 0.22 113 109
示例代码
import matplotlib.pyplot as plt
plt.plot(df.Date,df.sent,label='sent')
plt.plot(df.Date,df.var1,label='price1')
plt.plot(df.Date,df.var2,label= 'price2')
plt.show()
问题
我想使用以上三列来绘制折线图,但问题是列sent
的值与其他列相比非常小,当我添加列sent
时,它会缩小太多,曲线几乎变成了3条直线,这不能很好地表示数据。但是,仅使用var1
和var2
,绘图看起来很好。任何建议都是非常可取的。谢谢。
主要,我正在使用plotly
绘制数据,但我也可以使用matplotlib。
答案 0 :(得分:4)
仅使用辅助y轴,如下所示。首先创建一个轴对象ax
,然后直接使用DataFrame进行绘制,并在secondary_y=True
列中使用'sent'
。
import matplotlib.pyplot as plt
df= pd.DataFrame({'Date':['2007-01-01 07:14:00','2007-01-01 07:25:00','2007-01-01 08:00:00',
'2007-01-01 09:14:00','2007-01-01 09:33:12'],
'sent':[-0.32,0.34,-0.45,0.7,0.22],'var1': [114,115,111,112,113],
'var2':[110,111,115,112,109]})
fig, ax = plt.subplots()
df.plot('Date','var1',label='price1', ax=ax)
df.plot('Date','var2',label= 'price2',ax=ax)
df.plot('Date','sent',secondary_y=True, ax=ax, label='sent')
或者,您还可以按照以下方式显式使用twinx
,从而生成下图。这有点棘手,因为现在您将有两个单独的图例框。如果要将两个框合并在一起,可以阅读this答案
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
ax.plot(df.Date,df.var1,label='price1')
ax.plot(df.Date,df.var2,label= 'price2')
ax.legend(loc=0)
ax1 = ax.twinx()
ax1.plot(df.Date,df.sent,color='g', label='sent')
ax1.legend(loc=2)