使用 Matplotlib 在 Python 中绘制两个不同的 Y 轴

使用以下代码作为示例,我创建了一个名为数据集的数据框。


value1 = np.random.random(100)*30

value2 = np.random.random(100)*30

value3 = np.random.random(100)*30

value4 = np.random.random(100)*1000


dataset = pd.DataFrame({'value1': value1, 'value2': value2, 'value3': value3, 'value4': value4}, columns=['value1', 'value2', 'value3', 'value4'])


dataset[['value1', 'value2', 'value3']].plot(figsize=(20,10), linewidth=2, fontsize = 20, grid=True, marker="o", label='a').legend(loc='upper center', bbox_to_anchor=(0.5, -0.12),

           ncol=12, prop={'size': 16});


dataset['value4'].plot(secondary_y=True, legend=True, linewidth=2, marker="o",)



plt.xlabel('Year',fontsize=20)

plt.ylabel('(b)',fontsize=20)

我在 2 轴上绘制此数据集,但出于某种原因,只打印出右侧的轴,但未打印左侧的轴,我不确定为什么。


其次,我还试图查看 value1、2、3 如何响应变量 4(value4),所以我希望显示的图如下图所示。在图像中,我们可以看到变量 4 位于图表底部,其余变量位于顶部,因此我们可以清楚地看到变量 4 的上升或下降如何影响变量 1、2、3。Currenly 显示屏显示所有所有变量混合在一起,但我希望它看起来像下图。


任何帮助都会很棒,谢谢

http://img4.mukewang.com/640854980001cb6406270409.jpg

天涯尽头无女友
浏览 151回答 1
1回答

翻翻过去那场雪

你的代码是正确的。它们分别绘制在两个轴的范围内。如果您想将它与您的预期输出相匹配,您可以使用ax1.set_ylim(-30,30)or ax 2.set_ylim(0,4000)。ax1 = dataset[['value1', 'value2', 'value3']].plot(figsize=(20,10),                                             linewidth=2, fontsize = 20,                                             grid=True, marker="o", label='a')ax1.legend(loc='upper center', bbox_to_anchor=(0.5, -0.12), ncol=12, prop={'size': 16});ax2 = dataset['value4'].plot(secondary_y=True,legend=True, linewidth=2, marker="o",)ax1.set_ylim(-30,30)ax2.set_ylim(0,4000)ax1.set_xlabel('Year',fontsize=20)ax2.set_ylabel('(b)',fontsize=20)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python