Matplotlib——基礎語法與常用參數


 

 

 

 

基本繪圖流程

 

 

 

 

 

 

   In[ ]:  import  numpy  as  np          #引入 np

       import  matplotlib.pyplot  as  plt     #引入 plt

       plt.plot([3,3,5,6,2])            #用 plot 函數繪制二維圖形

          #當只有一組數據時,此數據代表 y 軸數,下標代表 x 軸數

       plt.ylabel("garde")            #給 y 軸加標簽 “gard”

       plt.savefig('D:/classwork/例1.png'.dpi=600)   #保存圖形,dpi 英寸像素點(質量)

       plt.show()                #顯示圖形,默認 PNG 格式

 

使用Matplotlib繪制圖表,需要先導入繪制圖表的模塊pyplot

      Import  matplotlib.pyplot  as  plt(plt引入模塊別名)

繪圖流程:創建畫布—創建子圖——制作圖形——美化圖片——保存圖片——顯示圖片

Pyplot模塊中默認有一個Figure對象,該對象可以理解為一張空白的畫布,用於容納圖表的各種組件。

 

 

1.創建畫布與創建子圖

  第一部分主要作用是構建出一張空白的畫布,並可以選擇是否將整個畫布划分為多個部分,方便在同一幅畫上繪制多個圖形的情況。最簡單的繪圖可以省略第一部分,而后直接在默認的畫布上進行圖形繪制。

創建一個空白畫布

如果不希望在默認的畫布山上繪制圖形,則可以調用figure()函數構建一張新的空白畫布

plt.figure(num=None,figsize=None,dpi=None,facecolor=None,edgecolor=None,frameon=True)

  num:圖像編號或名稱,數字為編號,字符串為名稱

  figsize:指定 figure 的寬和高,單位為英寸

  dpi:參數指定繪圖對象的分辨率,即每英寸多少個像素,缺省值為80,1英寸等於2.5cm

  facecolor:背景顏色

  edgecolor:邊框顏色

  frameon:是否顯示邊框

 

創建畫布

  In[ ]:  %matplotlib  notebook  #如果畫布不顯示,則輸入此行

      fig=plt.figure(1,facecolor='r')

      plt.savefig('D:/classwork/例2.png',facecolor=fig.get_facecolor())

 

創建並選中子圖

plt.subplot(nrows,ncols,plot_number)

     #行  #列 #當前子圖區

 

 

創建子圖

  In[ ]:  fig=plt.figure(figsize=(5,5),facecolor='#FF9966')      #創建畫布時設置背景顏色

      plt.subplot(3,2,4)

      plt.plot([0,2,4,6,8],[3,1,4,5,2])

      plt.xlabel("garde")

      plt.savefig('D:/classwork/例3',dpi=600,facecolor=fig.get_facecolor())

 

2.添加畫布內容

  第二部分是繪圖的主體部分。其中的添加標題、添加坐標軸名稱、繪制圖形等步驟是並列的,沒有先后順序,但是添加圖例一定要在繪制圖形之后。

      Pyplot中添加各類標簽和圖例的常用函數

 

 

 

 

 

 

3.保存與顯示圖形 

  第三部分主要用於保存和顯示圖形,這部分內容的常用函數只有兩個,並且參數很少。

        Pyplot中保存與顯示圖形的常用函數

 

 

 

 

pyplot中的基礎繪圖語法 

   In[ ]:  import  numpy  as  np

       import  matplotlib.pyplot  as  plt

       a = np.arange(0,1.1,0.01)

       plt.title('lines')          #添加標題

       plt.xlabel('x')            #添加 x 軸名稱

       plt.ylabel('y')           #添加 y 軸名稱

       plt.xlim((0,1))          #確定 x 軸范圍

       plt.ylim((0,1))          #確定y 軸范圍

       plt.xticks([0,0.2,0.4,0.6,0.8,1])    #規定 x 軸刻度

       plt.yticks([0,0.2,0.4,0.6,0.8,1])    #規定 y 軸刻度

       plt.plot(a,a**2)         #添加 y=x^2 曲線

       plt.plot(a,a**4)         #添加 y=x^4 曲線

       plt.legend(['y=x^2','y=x^4'])   #添加圖例

       plt.savefig('D:/classwork/例4.png')

       plt.show()

  Out[ ]:  

        

 

 

 包含子圖繪制的基礎語法

  In[ ]:  rad = np.arange(0,np.pi*2,0.01)    

      #第一幅子圖

       p1 = plt.figure(figsize=(8,6),dpi=80)       #確定畫布大小

       ax1 = pl.add_subplot(2,1,1)          #創建一個2行1列的子圖,並開始繪制第一幅

       plt.title('lines')                 #添加標題

       plt.xlabel('x')                 #添加 x 軸的名稱

       plt.ylable('y')                  #添加 y 軸的名稱

       plt.xlim((0,1))                 #添加 x 軸范圍

       plt.ylim((0,1))                 #添加 y 軸范圍

       plt.xticks([0,0.2,0.4,0.6,0.8,1])            #確定 x 軸刻度

       plt.yticks([0,0.2,0.4,0.6,0.8,1])              #確定 y 軸刻度

       plt.plot(rad,rad**2)               #添加 y=x^2 曲線

       plt.plot(rad,rad**4)               #添加 y=x^4 曲線

       plt.legend(['y=x^2','y=x^4'])      

      #第二幅子圖

      ax2 = pl.add_subplot(2,1,2)            #開始繪制第二幅

      plt.title('sin/cos')                  #添加標題

      plt.xlabel('rad')                   #添加 x 軸的名稱

      plt.ylabel('value')                  #添加 y 軸的名稱

      plt.xlim((0,np.pi*2))               #確定 x 軸范圍

      plt.ylim((-1,1))                   #確定 y 軸范圍

      plt.xticks([0,np.pi/2,np.pi,np.pi*1.5,np.pi*2])    #確定 x 軸刻度

      plt.yticks([-1,-0.5,0,0.5,1])               #確定 y 軸刻度

      plt.plot(rad,np.sin(rad))              #添加 sin 曲線

      plt.plot(rad,np.cos(rad))              #添加 cos 曲線

      plt.legend(['sin','cos'])

      plt.savefig('D:/classwork/sincos.png')

      plt.show()

  Out[ ]:

      

 

 

 

 

 設置 pyplot 的動態參數

  pyplot 使用 rc 配置文件來自定義圖形的各種默認屬性,被稱為 rc 配置或 rc 參數。在 pyplot 中,幾乎所有的屬性都是可以控制的,例如視圖窗口大小以及每英寸點數、線條寬度、顏色和樣式、坐標軸、坐標和網格屬性、文本、字體等。

調節線條的 rc 參數

  In[ ]:  #原圖

      x = np.linspace(0,4*np.pi)        #生成 x 軸數據

      y = np.sin(x)               #生成 y 軸數據

      plt.plot(x,y,label=("$sin(x)$")        #繪制 sin 曲線圖

               #LaTex格式

      plt.title('sin')

      plt.savefig('D:/classwork/默認sin曲線.png')

      plt.show()

  Out[ ]:

      

  In[ ]:  #修改 rc 參數后的圖

      plt.rcParams['lines.linestyle'] = '-.' 

      plt.rcParams['lines.linewidth'] = 3

      plt.plot(x,y,label='$sin(x)$')        #繪制三角函數

      plt.title('sin')

      plt.savefig('D:/classwork/修改rc參數后的sin曲線.png')

      plt.show()

  Out[ ]:

      

 

 

     

    

      

    

marker取值 意義 marker取值 意義 
'1' 下花三角 ‘ 2 ’ 上花三腳
'3' 左花三角 '4' 右花三角

 

 

 

 

調節字體

  默認的pyplot 字體並不支持中文字符的顯示,因此需要通過設置。

  (1)rcParams 修改字體實現中文顯示

      此方法會將其全部都設置為中文顯示,其他無需設置的也會設置,除非新建,不推薦使用。

rcParams 的屬性

屬性 說明

'font.family'

用於顯示字體的名字

'font.style'

用於顯示字體風格,正常'normal'或'italic'

'font.size'

用於顯示字體大小,整數字號或者'large','x-small'

    matplotlib.rcParams['font.family']='SimHei'      #SimHei  黑體

  In[ ]:  #無法顯示中文標題

      plt.plot(x,y,label='$sin(x)$')          #繪制三角形

      plt.title('sin曲線')

      plt.savefig('D:/classwork/無法顯示中文標題 sin曲線.png')

      plt.show()

  In[ ]:  #設置 rc 參數顯示中文標題

      #設置字體為 SimHei 顯示中文

      plt.rcParams['font.sans-serif'] = 'SimHei'

      plt.reParams['axes.unicode_minus'] = False       #設置正常顯示符號

      plt.plot(x,y,label="$sin(x)$")              #繪制三角函數

      plt.title('sin 曲線')

      plt.savefig('D:/classwork/顯示中文標題 sin曲線.png')

      plt.show()

  Out[ ]:  

      

 

 

   (2)在有中文輸出的地方,增加一個屬性:fontproperties

    plt.title('sin曲線',fontproper='SomHei',fontsize=20)

 

復雜的繪圖區域

  plt.subplot2grid(GridSpec,CurSpec,colspan=1,rowspan=1)

  理念:設定網格,選中網格,確定選中行列區域數量,編號從0開始。

   

 

 

   plt.subplot2grid((3,3),(1,0),colspan=2)

  # (3,3) 設定 3*3 網格,共 9 個網格

  # (1,0) 選定網格,確定第1 行,第 0 列

  # colspan=2,從第 1 行,第 0 列開始選中兩列

  plt.subplot1grid((3,3),(0,0),colspan=3)

  plt.subplot3grid((3,3),(1,2),rowspan=2)

  plt.subplot4grid((3,3),(2,0))

  plt.subplot5grid((3,3),(2,1))

 


免責聲明!

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



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