<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          matplotlib繪圖教程:設(shè)置標(biāo)簽與圖例

          共 3667字,需瀏覽 8分鐘

           ·

          2020-09-13 01:20

          大家好,歡迎大家閱讀周四數(shù)據(jù)處理專題,我們繼續(xù)介紹matplotlib作圖工具。

          在上一篇文章當(dāng)中我們介紹了matplotlib這個包當(dāng)中顏色、標(biāo)記和線條這三種畫圖的設(shè)置,今天我們同樣也介紹三種新的設(shè)置。分別是標(biāo)題、軸標(biāo)簽以及圖例,這三個內(nèi)容也是非常實用并且常用的。顏色、線條、標(biāo)記這些設(shè)置的是圖像本身的一些屬性,而標(biāo)題、軸標(biāo)簽這些數(shù)據(jù)是額外提供的補充數(shù)據(jù),所以這兩者的內(nèi)在邏輯是不同的。

          設(shè)置標(biāo)題


          和公眾號一樣,圖像的標(biāo)題也很重要,它直接告訴我們這幅圖表達(dá)的內(nèi)容。舉個例子來說你畫了logistics的函數(shù)圖像,但是給了一個外行人(比如老板)看,他是無論怎樣也看不出來這究竟是什么意思的。所以我們需要標(biāo)題,告訴看這幅圖的人,這幅圖到底畫了一些什么數(shù)據(jù)。

          基礎(chǔ)設(shè)置

          設(shè)置標(biāo)題的方法很簡單,如果我們就只有一幅圖畫的話,直接通過plt.title來設(shè)置即可。

          在子圖中設(shè)置

          通過plt設(shè)置title非常方便,也是我們最常用的設(shè)置方法。但是對于多個子圖的場景,我們就不能通過plt來設(shè)置title了,而是希望對于每一個子圖都能夠設(shè)置一個單獨的title。

          我們看一個之前的例子,我們之前用下面這段代碼同時畫出了兩個圖像:

          fig?=?plt.figure()
          ax1?=?fig.add_subplot(2,?1,?1)
          ax2?=?fig.add_subplot(2,?1,?2)

          ax1.plot(range(10))
          ax2.plot(x,?y)
          plt.show()

          這里的每一個ax都是一個subplot的對象,也就代表著每一個子圖。所以我們要為子圖設(shè)置title的話,那么顯然應(yīng)該通過subplot對象,也就是操作這里的ax變量來進(jìn)行。這里我們用到的api不再是title,而是set_title。我也不知道為什么要起不一樣的名字,可能是為了區(qū)分吧。

          我們把set_title的邏輯加上之后,得到的圖像是這樣的:

          這里有一個小小的問題是兩個圖挨得太近了,導(dǎo)致logistic的標(biāo)題和上一幅圖的坐標(biāo)軸重疊了。這個也很簡單,我們可以通過subplots_adjust設(shè)置讓子圖之間分開一些。

          通過這個設(shè)置我們可以控制這些子圖距離左右邊界以及彼此之間的間隙,我們可以設(shè)置成plt.subplots_adjust(hspace=0.5),表示子圖之間的間距是0.5英寸。這樣我們得到的結(jié)果如下:

          title參數(shù)

          傳入一個字符串作為標(biāo)題,這個只是最基本的設(shè)置,其實標(biāo)題還有很多參數(shù)可以diy。但一般不太常用,因為標(biāo)題有和沒有的區(qū)別比較大,是斜體還是正常體的區(qū)別很小,所以這些內(nèi)容的邊際收益很小。但我們還是要介紹一下的,至少需要有一個印象,以后如果要用的時候才能想的起來。

          title一共有9種參數(shù),分別是fontsize字體大小,fontweight字體粗細(xì),fontsytle字體風(fēng)格,verticalalignment豎直對齊方式,horizontalalignment水平對齊方式,rotation旋轉(zhuǎn)角度,alpha透明度,backgroundcolor背景顏色和bbox外框。

          我們一個一個來簡單說下它們接收的參數(shù):

          1. fontsize字體大小,我們可以輸入一個數(shù)字來代表字體的大小,默認(rèn)是12。也可以輸入一個字符串,選擇字符串的話只有['xx-small', 'x-small', 'small', 'medium', 'large','x-large', 'xx-large']這么幾種??雌饋硭倪壿嫼臀覀冑I衣服的尺碼是一樣的。
          2. fontweight字體粗細(xì),一般常用的選項有:['light', 'normal', 'medium', 'semibold', 'bold', 'heavy', 'black']。這些我們顧名思義就可以猜得出來每個選項代表什么意思。比如bold就是加粗,semibold是半加粗,heavy是重加粗,black就是全黑了。
          3. verticalalignment豎直對齊方式的參數(shù)是這么幾種:'center' , 'top' , 'bottom' ,'baseline' ,這個參數(shù)用得不多。
          4. horizontalalignment水平對齊方式的參數(shù)是[left,right,center],和我們?nèi)粘T趙ord里設(shè)置是一樣的。這個比上面那個用得頻率高一些。
          5. rotation旋轉(zhuǎn)角度,我們可以傳入一個數(shù)字代表旋轉(zhuǎn)的角度,也可以傳入vertical,horizontal 來表示我們想要旋轉(zhuǎn)的效果。
          6. alpha透明度,參數(shù)在0到1之間。
          7. backgroundcolor背景顏色,也沒什么好說的。
          8. bbox背景框,背景框雖然只是一個參數(shù),但是它是由好幾個參數(shù)組合形成的。比如facecolor背景顏色,edgecolor線條顏色,boxstyle方框外形,edgewidth線條粗細(xì)。

          我們把這些參數(shù)都用起來給大家看一個組合例子:

          軸標(biāo)簽


          軸標(biāo)簽顧名思義,就是在坐標(biāo)軸上加上標(biāo)簽,告訴大家這個坐標(biāo)軸代表的含義。比如我們畫的月份銷量圖,我們的橫坐標(biāo)是每年的月份,縱坐標(biāo)是當(dāng)月的銷量。如果不標(biāo)出來看圖的人很難知道這個軸代表的含義,可能會理解錯。所以我們可以給坐標(biāo)軸加上軸標(biāo)簽,讓大家一眼就看得出來,這個軸代表的含義。

          加上軸標(biāo)簽的方法也非常簡單,和剛才添加title的方式基本一樣,用xlabel設(shè)置x軸標(biāo)簽,用ylabel設(shè)置y軸標(biāo)簽。比如這樣:

          如果是多個子圖,我們同樣操作subplot這個對象來進(jìn)行設(shè)置。

          設(shè)置圖例


          下面來介紹一下設(shè)置圖例,圖例這個翻譯不是很好,但是也找不到更精準(zhǔn)的翻譯了。圖例的使用場景是我們將多個曲線畫在同一張畫布上的時候,這時候為了區(qū)分每一個顏色的圖像代表的含義,我們需要在圖像當(dāng)中標(biāo)注出來。

          我們來看這個例子,這個例子是我在matplotlib的官網(wǎng)找到的,它繪制的是x和,函數(shù)圖像的差別。由于這三張圖是畫在一起的,為了能夠讓讀者分辨出究竟什么顏色代表什么函數(shù),所以在左上角標(biāo)上了圖例。

          我們關(guān)注一下圖像的左上角,已經(jīng)替我們標(biāo)好了。藍(lán)色的是線性圖像,也就是x,黃色的是x的平方,綠色的是x的立方。

          那么這個圖例是怎么標(biāo)出來的呢?這里需要做兩件事,第一件事就是在我們通過plot繪制圖像的時候需要加上label,表示當(dāng)前畫的這個圖像到底是什么意思。這個label也就是我們看到左上角展示圖例當(dāng)中的文字。比如linear, quadratic之類的就是label。另外一個就是在我們調(diào)用show這個函數(shù)之前,需要調(diào)用一下legend這個方法,這個方法就是繪制圖例用的。

          我們來看下剛才那張圖的代碼:

          x?=?np.linspace(0,?2,?100)

          plt.plot(x,?x,?label='linear')
          plt.plot(x,?x**2,?label='quadratic')
          plt.plot(x,?x**3,?label='cubic')

          plt.xlabel('x?label')
          plt.ylabel('y?label')

          plt.title("Simple?Plot")
          plt.legend()
          plt.show()

          它在子圖上的用法基本上一模一樣,我們來看個例子:

          我們可以看到對于ax1這張子圖來說,我們做的事情和plt是一樣的,就是在調(diào)用plot的時候標(biāo)上了label,然后在show之前調(diào)用了legend方法。

          最后來介紹一下legend的參數(shù),其實legend有很多參數(shù),我們選擇其中比較常用的幾個說一說。剩下的大家可以去查看相關(guān)的文檔,我建議是用到的時候再去查,不過也可能一直沒機會用到。

          首先是loc,loc是location的縮寫,顧名思義表示圖例放置的位置。傳入的參數(shù)表示一個方位,比如upper left, lower left, center left等等。上中下分別是upper,center,lower,左中右分別是left, center, right。我們可以自由組合這兩個方位,可以得到9種方位,再加上一種best,表示自適配最佳放置位置。

          除此之外是常見的幾個參數(shù),比如title,fontsize,edgecolor,shadow和facecolor。這幾個參數(shù)我們根據(jù)名字大概就猜得出來,有些剛才介紹title的時候講過了,效果是一樣的,只不過放置的位置不同而已。

          除了這些之外還有像是設(shè)置圖例當(dāng)中先放縮略圖還是先放文字的markerfirst,設(shè)置散點圖中散點數(shù)量的scatterpoints。以及一些關(guān)于間距文本長度的設(shè)置,這些都不是非常常用,就不一一贅述了。

          今天的文章到這里就結(jié)束了,如果喜歡本文的話,請來一波三連,給我一點支持吧。(關(guān)注、在看、點贊)。

          - END -

          瀏覽 37
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  国产成人自拍视频在线 | 国产在线色视频 | 西西特级444人体大胆图片 | 精品久久久久久久久久久久久久久久 | 色五婷婷|