Python matplotlib畫圖時圖例說明(legend)放到影象外側詳解
用python的matplotlib畫圖時,往往需要加圖例說明。如果不設定任何引數,預設是加到影象的內側的最佳位置。
import matplotlib.pyplot as plt import numpy as np x = np.arange(10) fig = plt.figure() ax = plt.subplot(111) for i in xrange(5): ax.plot(x,i * x,label='$y = %ix$' % i) plt.legend() plt.show()
這樣的結果如圖所示:
如果需要將該legend移到影象外側,有多種方法,這裡介紹一種。
在plt.legend()函式中加入若干引數:
plt.legend(bbox_to_anchor=(num1,num2),loc=num3,borderaxespad=num4)
bbox_to_anchor(num1,num2)表示legend的位置和影象的位置關係,num1表示水平位置,num2表示垂直位置。num1=0表示legend位於影象的左側垂直線(這裡的其它引數設定:num2=0,num3=3,num4=0)。
num1=1表示legend位於影象的右側垂直線(其它引數設定:num2=0,num4=0)。
為了美觀,需要將legend放於影象的外側,而又距離不是太大,一般設num1=1.05。
num2=0表示legend位於影象下側水平線(其它引數設定:num1=1.05,num4=0)。
num2=1表示legend位於影象上側水平線(其它引數設定:num1=1.05,num4=0)。
所以,如果希望legend位於影象的右下,需要將num2設為0,位於影象的右上,需要將num2設為1。
由於legend是一個方框,bbox_to_anchor=(num1,num2)相當於表示一個點,那麼legend的哪個位置位於這個點上呢。引數num3就用以表示哪個位置位於該點。
Location String | Location Code |
'best' | 0 |
'upper right' | 1 |
'upper left' | 2 |
'lower left' | 3 |
'lower right' | 4 |
'right' | 5 |
'center left' | 6 |
'center right' | 7 |
'lower center' | 8 |
'upper center' | 9 |
'center' | 10 |
所以,當設bbox_to_anchor=(1.05,0),即legend放於影象右下角時,為美觀起見,需要將legend的左下角,即'lower left'放置該點,對應該表的‘Location Code'數字為3,即引數num3置為3或直接設為‘lower left';而當設bbox_to_anchor=(1.05,1),即legend放於影象右上角時,為美觀起見,需要將legend的左上角,即'upper left'放置該點,對應該表的‘Location Code'數字為2,即引數num3置為2或直接設為‘upper left'。
根據參考網址上的解釋,引數num4表示軸和legend之間的填充,以字型大小距離測量,預設值為None,但實際操作中,如果不加該引數,效果是有一定的填充,下面有例圖展示,我這裡設為0,即取消填充,具體看個人選擇。
這是將legend放於影象右下的完整程式碼:
import matplotlib.pyplot as plt import numpy as np x = np.arange(10) fig = plt.figure() ax = plt.subplot(111) for i in xrange(5): ax.plot(x,label='$y = %ix$' % i) plt.legend(bbox_to_anchor=(1.05,0),loc=3,borderaxespad=0) plt.show()
效果展示:
這裡legend的‘lower left'置於(1.05,0)的位置。
如果不加入引數num4,那麼效果為:
legend稍靠上,有一定的填充。
這是將legend放於影象右上的完整程式碼:
import matplotlib.pyplot as plt import numpy as np x = np.arange(10) fig = plt.figure() ax = plt.subplot(111) for i in xrange(5): ax.plot(x,1),loc=2,borderaxespad=0) plt.show()
效果展示:
這裡legend的‘upper left'置於(1.05,那麼效果為:
legend稍靠下。
以上這篇Python matplotlib畫圖時圖例說明(legend)放到影象外側詳解就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。