[英]Plot with Two Different Y-axis in Python with Matplotlib
使用以下代碼作為示例,我創建了一個 dataframe 命名數據集。
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)
我 plot 這個數據集在 2 軸上,但由於某種原因,只有右邊的軸被打印出來,但左邊的軸沒有打印,我不知道為什么。
其次,我還試圖查看 value1、2、3 如何響應變量 4 (value4),所以我希望 plot 顯示如下圖所示。 在圖像上,我們可以看到圖表底部有變量 4,頂部有 rest,因此我們可以清楚地看到變量 4 的上升或下降如何影響變量 1、2、3。 目前顯示屏顯示所有混合變量,但我希望它看起來像下圖。
任何幫助都會很棒,謝謝
你的代碼是正確的。 它們分別繪制在兩個軸的范圍內。 如果要將其與預期的 output 匹配,可以使用ax1.set_ylim(-30,30)
或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)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.