为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

天涯尽头无女友 2023-03-08 17:25:13
使用以下代码作为示例,我创建了一个名为数据集的数据框。value1 = np.random.random(100)*30value2 = np.random.random(100)*30value3 = np.random.random(100)*30value4 = np.random.random(100)*1000dataset = 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 显示屏显示所有所有变量混合在一起,但我希望它看起来像下图。任何帮助都会很棒,谢谢
查看完整描述

1 回答

?
翻翻过去那场雪

TA贡献2065条经验 获得超13个赞

你的代码是正确的。它们分别绘制在两个轴的范围内。如果您想将它与您的预期输出相匹配,您可以使用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)

//img1.sycdn.imooc.com//640854aa0001267c06590322.jpg

查看完整回答
反对 回复 2023-03-08
  • 1 回答
  • 0 关注
  • 120 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信