如何在 Matplotlib 中指定圖形座標中的圖例位置
Suraj Joshi
2020年11月7日
我們可以通過設定 loc
引數的值來指定圖例在圖形中的位置。
示例:Matplotlib 在圖形座標中指定圖例位置
import matplotlib.pyplot as plt
x=[1,2,3]
y1=[0.5*i+1 for i in x]
y2=[2*i+1 for i in x]
fig,ax=plt.subplots(2,1)
ax[0].plot(x,y1,'b-',label="0.5x+1")
ax[0].plot(x,y2,'g-',label="2x+1")
ax[0].legend(loc="best")
ax[1].plot(x,y1,'b-',label="0.5x+1")
ax[1].plot(x,y2,'g-',label="2x+1")
ax[1].legend(loc="lower left")
plt.tight_layout()
plt.show()
輸出:
這裡,我們有一個有兩個子圖的圖。最上面的子圖將 loc
設定為 best
;這就將圖例放置在圖的最佳位置,在此處我們沒有任何內容。
類似的情況也發生在底部的第二個子圖中:圖例被放置在邊界框的左下角位置,覆蓋了整個軸線。邊界框由 bbox_to_anchor
引數指定,其預設值為 (0,0,1,1)
。
loc
引數可以取以下任意一個值。
best |
upper right |
upper left |
lower left |
lower right |
right |
center left |
center right |
lower center |
upper center |
center |
這些位置代表圖例相對於 bbox_to_anchor
引數指定的邊界框的位置。
同樣,我們可以通過改變 bbox_to_anchor
引數的值將圖例放置在圖中的任何位置。bbox_to_anchor
引數取一個元組,代表座標,loc
引數指定的角將被放置在那裡。
import matplotlib.pyplot as plt
x=[1,2,3]
y1=[0.5*i+1 for i in x]
y2=[2*i+1 for i in x]
fig,ax=plt.subplots(2,1)
ax[0].plot(x,y1,'b-',label="Plot-1")
ax[0].plot(x,y2,'g-',label="Plot-2")
ax[0].legend(loc="upper left", bbox_to_anchor=(0.9,0.75))
ax[0].scatter((0.9),(0.75), s=70, c="red",transform=ax[0].transAxes)
ax[1].plot(x,y1,'b-',label="Plot-1")
ax[1].plot(x,y2,'g-',label="Plot-2")
ax[1].legend(loc="center right", bbox_to_anchor=(0.6,0.4))
ax[1].scatter((0.6),(0.4), s=70, c="red",transform=ax[1].transAxes)
plt.tight_layout()
plt.show()
輸出:
在頂部的子圖中,我們將 bbox_to_anchor
設定為 (0.9,0.75)
,由子圖上的紅點標示。loc
引數"upper left"
的值表示圖例的左上角,放在紅點處。
底部的子圖,bbox_to_anchor
設定為 (0.6,0.4)
,由圖中底軸的紅點標示。loc
的值設定為"center right"
;因此,底軸圖例的右邊中心在紅點處。
Author: Suraj Joshi
Suraj Joshi is a backend software engineer at Matrice.ai.
LinkedIn