Matplotlib 圖題、圖例以及軸標簽


一、圖題、圖例、軸標簽的方法

分別是下面三種方法:

  • 圖題: plt.title()
  • 圖例:plt.legend()
  • 軸標簽:plt.xlabel()、plt.ylabel()

使用label參數,為繪制的每條線添加一個標簽,然后使用legend方法展示出來。

plt.plot(x, np.cos(x),'-g',label='cos(x)') plt.plot(x, np.sin(x),':b',label='sin(x)') plt.title('a cos curve') plt.xlabel("X") plt.ylabel("cos(X)") plt.legend()

注:大多數的plt方法都可以直接轉換成ax方法,比如plt.plot()->ax.plot(),plt.legend()->ax.legend()。但並不是所有的都可以,比如下面的需要這么轉換:

  • plt.xlabel() -> ax.set_xlabel()
  • plt.ylabel() -> ax.set_ylabel()
  • plt.xlim() -> ax.set_xlim()
  • plt.ylim() -> ax.set_ylim()
  • plt.title() -> ax.set_title()

在面向對象接口畫圖的時候,不需要單獨調用這些函數,使用ax.set()方法一次性設置即可:

x = np.linspace(0,10,100) ax = plt.axes() ax.plot(x,np.sin(x)) ax.set(xlim=(0,10),ylim=(-2,2),xlabel='x',ylabel='sin(x)',title='a sin plot')

二、圖題的配置

title標題方法,也有許多可以配置的參數:

  • fontsize:字體大小,默認12,也可以使用xx-small....字符串系列
  • fontweight:字體粗細,或者'light'、'normal'、'medium'、'semibold'、'bold'、 'heavy'、'black'。
  • fontstyle: 字體類型,或者'normal'、'italic'、'oblique'。
  • verticalalignment:垂直對齊方式 ,或者'center'、'top'、'bottom'、'baseline'
  • horizontalalignment:水平對齊方式,可選參數:‘left’、‘right’、‘center’
  • rotation:旋轉角度
  • alpha: 透明度,參數值0至1之間
  • backgroundcolor: 背景顏色
  • bbox:給標題增加外框 ,常用參數如下:
    • boxstyle:方框外形
    • facecolor:(簡寫fc)背景顏色
    • edgecolor:(簡寫ec)邊框線條顏色
    • edgewidth:邊框線條大小

下面是一些使用的例子:

plt.title('A Title',fontsize='large',fontweight='bold') #設置字體大小與尺寸
plt.title('A Title',color='yellow') #設置字體顏色
plt.title('A Title',loc ='left') #設置字體位置
plt.title('A Title',verticalalignment='bottom') #設置垂直對齊方式
plt.title('A Title',rotation=45) #設置字體旋轉角度
plt.title('A Title',bbox=dict(facecolor='g', edgecolor='blue', alpha=0.65 )) #設置標題邊框

實際上,title標題方法的大部分參數也適用於xlabel和ylabel坐標軸標簽方法。

三、圖例的配置

legend圖例方法有很多可以配置的參數和選項:

參數 說明
loc 圖例的位置
prop 字體參數
fontsize 字體大小
markerscale 圖例標記與原始標記的相對大小
markerfirst 如果為True,則圖例標記位於圖例標簽的左側
numpoints 為線條圖圖例條目創建的標記點數
scatterpoints 為散點圖圖例條目創建的標記點數
scatteryoffsets 為散點圖圖例條目創建的標記的垂直偏移量
frameon 是否顯示圖例邊框
fancybox 邊框四個角是否有弧度
shadow 控制是否在圖例后面畫一個陰影
framealpha 圖例邊框的透明度
edgecolor 邊框顏色
facecolor 背景色
ncol 設置圖例分為n列展示
borderpad 圖例邊框的內邊距
labelspacing 圖例條目之間的垂直間距
handlelength 圖例句柄的長度
handleheight 圖例句柄的高度
handletextpad 圖例句柄和文本之間的間距
borderaxespad 軸與圖例邊框之間的距離
columnspacing 列間距
title 圖例的標題

對於loc這個圖例在坐標軸中的放置位置,有兩種表示方法:數字或者字符串,其對應關系如下:

  • 0: ‘best' : 自動選擇最適合的位置
  • 1: ‘upper right': 右上
  • 2: ‘upper left': 左上
  • 3: ‘lower left': 左下
  • 4: ‘lower right':右下
  • 5: ‘right':右
  • 6: ‘center left':左中
  • 7: ‘center right':右中
  • 8: ‘lower center':下中
  • 9: ‘upper center': 上中
  • 10: ‘center':中間

設置字體大小的參數fontsize可以使用整數或者浮點數,以及字符串‘xx-small’、 ‘x-small’、 ‘small’、‘medium’、 ‘large’、 ‘x-large’和‘xx-large’。

下面是一些使用的例子

plt.legend(loc='best',frameon=False) #去掉圖例邊框
plt.legend(loc='best',edgecolor='blue') #設置圖例邊框顏色
plt.legend(loc='best',facecolor='blue') #設置圖例背景顏色,若無邊框,參數無效
plt.legend(loc='best',title='figure') #去掉圖例邊框
plt.legend(loc='upper left', ncol=2, frameon=False) # 分兩列顯示,在左上角
plt.legend(fancybox=True,framealpha=1, shadow=True, borderpad=1)

默認情況下,圖例會忽略那些不帶標簽的繪圖,只為設置了label參數的繪圖添加圖例。

有時候可能需要在同一張圖上顯示多個圖例。不過,用普通方法解決不了這個問題,標准的legend接口只能為一張圖創建一個圖例。但是可以通過plt.gca().add_artist()方法(或者ax.add_artist()),將先前創建過的圖例用底層的接口重新添加上去。

lines = [] styles= ['-', '--','-.',':'] x = np.linspace(0,10,1000) for i in range(4): # 制造四條sin曲線
    lines += plt.plot(x, np.cos(x-i*np.pi/2), styles[i]) plt.axis('equal') # 生成第一個圖例,並保存引用
leg = plt.legend(lines[:2], ['line A', 'line B'], loc=1,frameon=False) # 生成第二個圖例,這會讓第一個圖例被抹去
plt.legend(lines[2:], ['line C', 'line D'], loc=4,frameon=False) # gca方法獲取當前坐標軸,再使用它的`add_artist`方法將第一個圖例重新畫上去
plt.gca().add_artist(leg)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM