簡體   English   中英

Plot 在 Python 和 Matplotlib 中有兩個不同的 Y 軸

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM