Python matplotlib畫圖時(shí)圖例說明(legend)放到圖像外側(cè)詳解
用python的matplotlib畫圖時(shí),往往需要加圖例說明。如果不設(shè)置任何參數(shù),默認(rèn)是加到圖像的內(nèi)側(cè)的最佳位置。
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()
這樣的結(jié)果如圖所示:

如果需要將該legend移到圖像外側(cè),有多種方法,這里介紹一種。
在plt.legend()函數(shù)中加入若干參數(shù):
plt.legend(bbox_to_anchor=(num1, num2), loc=num3, borderaxespad=num4)
bbox_to_anchor(num1,num2)表示legend的位置和圖像的位置關(guān)系,num1表示水平位置,num2表示垂直位置。num1=0表示legend位于圖像的左側(cè)垂直線(這里的其它參數(shù)設(shè)置:num2=0,num3=3,num4=0)。

num1=1表示legend位于圖像的右側(cè)垂直線(其它參數(shù)設(shè)置:num2=0,num3=3,num4=0)。

為了美觀,需要將legend放于圖像的外側(cè),而又距離不是太大,一般設(shè)num1=1.05。
num2=0表示legend位于圖像下側(cè)水平線(其它參數(shù)設(shè)置:num1=1.05,num3=3,num4=0)。

num2=1表示legend位于圖像上側(cè)水平線(其它參數(shù)設(shè)置:num1=1.05,num3=3,num4=0)。

所以,如果希望legend位于圖像的右下,需要將num2設(shè)為0,位于圖像的右上,需要將num2設(shè)為1。
由于legend是一個(gè)方框,bbox_to_anchor=(num1, num2)相當(dāng)于表示一個(gè)點(diǎn),那么legend的哪個(gè)位置位于這個(gè)點(diǎn)上呢。參數(shù)num3就用以表示哪個(gè)位置位于該點(diǎn)。
| 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 |
所以,當(dāng)設(shè)bbox_to_anchor=(1.05,0),即legend放于圖像右下角時(shí),為美觀起見,需要將legend的左下角,即'lower left'放置該點(diǎn),對(duì)應(yīng)該表的‘Location Code'數(shù)字為3,即參數(shù)num3置為3或直接設(shè)為‘lower left';而當(dāng)設(shè)bbox_to_anchor=(1.05,1),即legend放于圖像右上角時(shí),為美觀起見,需要將legend的左上角,即'upper left'放置該點(diǎn),對(duì)應(yīng)該表的‘Location Code'數(shù)字為2,即參數(shù)num3置為2或直接設(shè)為‘upper left'。
根據(jù)參考網(wǎng)址上的解釋,參數(shù)num4表示軸和legend之間的填充,以字體大小距離測(cè)量,默認(rèn)值為None,但實(shí)際操作中,如果不加該參數(shù),效果是有一定的填充,下面有例圖展示,我這里設(shè)為0,即取消填充,具體看個(gè)人選擇。
這是將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, i * 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)的位置。
如果不加入?yún)?shù)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, i * x, label='$y = %ix$' % i) plt.legend(bbox_to_anchor=(1.05, 1), loc=2, borderaxespad=0) plt.show()
效果展示:

這里legend的‘upper left'置于(1.05, 0)的位置。
如果不加入?yún)?shù)num4,那么效果為:

legend稍靠下。
以上這篇Python matplotlib畫圖時(shí)圖例說明(legend)放到圖像外側(cè)詳解就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python機(jī)器學(xué)習(xí)之底層實(shí)現(xiàn)KNN
今天給大家?guī)淼氖顷P(guān)于Python機(jī)器學(xué)習(xí)的相關(guān)知識(shí),文章圍繞著Python底層實(shí)現(xiàn)KNN展開,文中有非常詳細(xì)的解釋及代碼示例,需要的朋友可以參考下2021-06-06
Python和RabbitMQ進(jìn)行消息傳遞和處理方式
這篇文章主要介紹了Python和RabbitMQ進(jìn)行消息傳遞和處理方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-07-07
對(duì)PyQt5中樹結(jié)構(gòu)的實(shí)現(xiàn)方法詳解
今天小編就為大家分享一篇對(duì)PyQt5中樹結(jié)構(gòu)的實(shí)現(xiàn)方法詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-06-06
Python整數(shù)與Numpy數(shù)據(jù)溢出問題解決
這篇文章主要介紹了Python 的整數(shù)與 Numpy 的數(shù)據(jù)溢出,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-09-09
Python3實(shí)現(xiàn)騰訊云OCR識(shí)別
這篇文章主要為大家詳細(xì)介紹了Python3實(shí)現(xiàn)騰訊云OCR識(shí)別,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-11-11
selenium獲取元素定位的方法總結(jié)(動(dòng)態(tài)獲取元素)
要想操作一個(gè)元素,首先應(yīng)該識(shí)別這個(gè)元素,人有各種的特征(屬性),可以通過其特征找到人,同理,界面的某個(gè)元素會(huì)有各種的特征(屬性),可以通過這個(gè)屬性找到這對(duì)象,本文給大家介紹了python?selenium獲取元素定位的8種方法,需要的朋友可以參考下2024-02-02

