Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用图例和辅助y轴在同一绘图上绘制两只熊猫的时间序列?_Python_Pandas_Matplotlib - Fatal编程技术网

Python 如何使用图例和辅助y轴在同一绘图上绘制两只熊猫的时间序列?

Python 如何使用图例和辅助y轴在同一绘图上绘制两只熊猫的时间序列?,python,pandas,matplotlib,Python,Pandas,Matplotlib,我想用相同的x轴和次y轴在同一个图上绘制两个时间序列。我不知怎么做到了这一点,但两个图例重叠,无法为x轴和辅助y轴添加标签。我尝试将两个图例放在左上角和右上角,但仍然不起作用 代码: 提前感谢以下解决方案适合我。第一个将两条线放在一个图例中,第二个将两条线拆分为两个图例,类似于上面尝试的内容 这是我的数据框 ts = pd.Series(np.random.randn(1000), index=pd.date_range('1/1/2000', periods=1000)) df = pd.D

我想用相同的x轴和次y轴在同一个图上绘制两个时间序列。我不知怎么做到了这一点,但两个图例重叠,无法为x轴和辅助y轴添加标签。我尝试将两个图例放在左上角和右上角,但仍然不起作用

代码:


提前感谢

以下解决方案适合我。第一个将两条线放在一个图例中,第二个将两条线拆分为两个图例,类似于上面尝试的内容

这是我的数据框

ts = pd.Series(np.random.randn(1000), index=pd.date_range('1/1/2000', periods=1000))
df = pd.DataFrame(np.random.randn(1000, 4), index=ts.index, columns=list('ABCD'))
一个图例解决方案,归功于StackOverflow post

plt.figure(figsize=(12,5))
plt.xlabel('Number of requests every 10 minutes')

ax1 = df.A.plot(color='blue', grid=True, label='Count')
ax2 = df.B.plot(color='red', grid=True, secondary_y=True, label='Sum')

h1, l1 = ax1.get_legend_handles_labels()
h2, l2 = ax2.get_legend_handles_labels()


plt.legend(h1+h2, l1+l2, loc=2)
plt.show()

拆分图例解决方案

plt.figure(figsize=(12,5))
plt.xlabel('Number of requests every 10 minutes')

ax1 = df.A.plot(color='blue', grid=True, label='Count')
ax2 = df.B.plot(color='red', grid=True, secondary_y=True, label='Sum')

ax1.legend(loc=1)
ax2.legend(loc=2)

plt.show()

它可以简单到:

df.loc[:,['A','B']].plot(secondary_y=['B'], mark_right=False, figsize = (20,5), grid=True)
mark_right=False表示“B”标签位于左轴上

df.loc[:,['A','B']].plot(secondary_y=['B'], mark_right=False, figsize = (20,5), grid=True)