首頁  >  文章  >  後端開發  >  如何使用 twinx() 將標籤新增至具有輔助軸的圖中的圖例?

如何使用 twinx() 將標籤新增至具有輔助軸的圖中的圖例?

Patricia Arquette
Patricia Arquette原創
2024-10-31 04:32:30889瀏覽

How to Add Labels to the Legend in Plots with Secondary Axes Using twinx()?

使用twinx() 在具有輔助軸的圖中向圖例添加標籤

在單一圖中具有多個軸對於可視化非常有用來自不同來源或不同單位的資料。使用 twinx() 函數建立輔助軸時,可能需要在輔助軸上繪製的線條新增標籤並將其包含在圖例中。

要實現此目的,您可以新增使用 ax2.legend(loc=0) 為輔助軸單獨的圖例。但是,這種方法會產生兩個單獨的圖例。

為了更一致的顯示,可以使用以下步驟將所有標籤新增至單一圖例:

  • 建立行列表表示在兩個軸上繪製的所有線條的物件。
  • 建立與線條物件對應的標籤清單。
  • 使用 legend 函數將線條和標籤新增至圖例,並傳遞 loc 參數指定圖例的位置。
<code class="python">import numpy as np
import matplotlib.pyplot as plt
from matplotlib import rc

time = np.arange(10)
temp = np.random.random(10)*30
Swdown = np.random.random(10)*100-10
Rn = np.random.random(10)*100-10

fig = plt.figure()
ax = fig.add_subplot(111)

lns1 = ax.plot(time, Swdown, '-', label = 'Swdown')
lns2 = ax.plot(time, Rn, '-', label = 'Rn')
ax2 = ax.twinx()
lns3 = ax2.plot(time, temp, '-r', label = 'temp')

# Add all lines and labels to a single legend
lns = lns1+lns2+lns3
labs = [l.get_label() for l in lns]
ax.legend(lns, labs, loc=0)

ax.grid()
ax.set_xlabel("Time (h)")
ax.set_ylabel(r"Radiation ($MJ\,m^{-2}\,d^{-1}$)")
ax2.set_ylabel(r"Temperature ($^\circ$C)")
ax2.set_ylim(0, 35)
ax.set_ylim(-20,100)
plt.show()</code>

此程式碼將產生一個圖例,其中包含主軸和輔助軸的所有標籤。

以上是如何使用 twinx() 將標籤新增至具有輔助軸的圖中的圖例?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn