Python matplotlib簡介 Pyplot教程

來源:互聯網
上載者:User

  本文主要翻譯自matplotlib官網

  matplotlib.pyplot是一些命令列風格函數的集合,使matplotlib以類似於MATLAB的方式工作。每個pyplot函數對一幅圖片(figure)做一些改動:比如建立新圖片,在圖片建立一個新的作圖地區(plotting area),在一個作圖地區內畫直線,給圖添加標籤(label)等。matplotlib.pyplot是有狀態的,亦即它會儲存當前圖片和作圖地區的狀態,新的作圖函數會作用在當前圖片的狀態基礎之上。

import matplotlib.pyplot as pltplt.plot([1,2,3,4])plt.ylabel('some numbers')plt.show()

   的X座標是1-3,縱座標是1-4,這是因為如果你只提供給plot()函數一個列表或數組,matplotlib會認為這是一串Y值(Y向量),並且自動產生X值(X向量)。而Python一般是從0開始計數的,所以X向量有和Y向量一樣的長度(此處是4),但是是從0開始,所以X軸的值為[0,1,2,3]。

  如果要顯示的制定X軸的座標,可以像如下一樣:

plt.plot([1,2,3,4],[1,4,9,16])

  

  也可以給plt.plot()函數傳遞多個序列(元組或列表),每兩個序列是一個X,Y向量對,在圖中構成一條曲線,這樣就會在同一個圖裡存在多條曲線。

  為了區分同一個圖裡的多條曲線,可以為每個X,Y向量對指定一個參數來標明該曲線的表現形式,預設的參數是'b-',亦即藍色的直線,如果想用紅色的圓點來表示這條曲線,可以:

import matplotlib.pyplot as pltplt.plot([1,2,3,4],[1,4,9,16],'ro')plt.axis([0,6,0,20])

  axis()函數接受形如[xmin,xmax,ymin,ymax]的參數,指定了X,Y軸座標的範圍。

  matplotlib不僅僅可以使用序列(列表和元組)作為參數,還可以使用numpy數組。實際上,所有的序列都被內在的轉化為numpy數組。

import numpy as npimport matplotlib.pyplot as pltt=np,arange(0.,5.,0.2)plt.plot(t,t,'r--',t,t**2,'bs',t,t**3,'g^')

  控制曲線的屬性

  曲線有許多我們可以設定的性質:曲線的寬度,虛線的風格,消除鋸齒等等。有多種設定曲線屬性的方法:

  1.使用關鍵詞參數:

plt.plot(x,y,linewidth=2.0)

  2.使用Line2D執行個體的設定(Setter)方法。plot()返回的是曲線的列表,比如line1,line2=plot(x1,y1,x2,y2).我們取得plot()函數返回的曲線之後用Setter方法來設定曲線的屬性。

line,=plt.plot(x,y,'-')line.set)antialliased(False)  #關閉消除鋸齒

  3.使用setp()命令:

lines=plt.plot(x1,y1,x2,y2)plt.setp(lines,color='r',linewidth=2.0)plt.setp(lines,'color','r','linewidth','2.0')

  處理多個圖和Axe

  MATLAB和pyplot都有當前圖和當前axe的概念。所有的作圖命令都作用在當前axe。

  函數gca()返回當前axe,gcf()返回當前圖。

import numpy as npimport matplotlib.pyplot as pltdef f(t):    return np.exp(-t) * np.cos(2*np.pi*t)t1 = np.arange(0.0, 5.0, 0.1)t2 = np.arange(0.0, 5.0, 0.02)plt.figure(1)plt.subplot(211)plt.plot(t1, f(t1), 'bo', t2, f(t2), 'k')plt.subplot(212)plt.plot(t2, np.cos(2*np.pi*t2), 'r--')

  figure()命令是可選的,因為figure(1)會被預設建立,subplot(111)也會被預設建立。subplot()命令會指定numrows,numcols,fignum,其中fignum的取值範圍為從1到numrows*numcols。如果numrows*numcols小於10則subplot()命令中的逗號是可選的。所以subplot(2,1,1)與subplot(211)是完全一樣的。

  如果你想手動放置axe,而不是放置在矩形方格內,則可以使用axes()命令,其中的參數為axes([left,bottom,width,height]),每個參數的取值範圍為(0,1)。

  你可以使用多個figure()來建立多個圖,每個圖都可以有多個axe和subplot:

import matplotlib.pyplot as pltplt.figure(1)                # the first figureplt.subplot(211)             # the first subplot in the first figureplt.plot([1,2,3])plt.subplot(212)             # the second subplot in the first figureplt.plot([4,5,6])plt.figure(2)                # a second figureplt.plot([4,5,6])            # creates a subplot(111) by defaultplt.figure(1)                # figure 1 current; subplot(212) still currentplt.subplot(211)             # make subplot(211) in figure1 currentplt.title('Easy as 1,2,3')   # subplot 211 title

  你可以使用clf()和cla()命令來清空當前figure和當前axe。

  如果你建立了許多圖,你需要顯示的使用close()命令來釋放該圖所佔用的記憶體,僅僅關閉顯示在螢幕上的圖是不會釋放記憶體空間的。

  處理文本

  text()命令可以用來在任意位置上添加文本,xlabel(),ylabel(),title()可以用來在X軸,Y軸,標題處添加文本。

import numpy as npimport matplotlib.pyplot as pltmu, sigma = 100, 15x = mu + sigma * np.random.randn(10000)# the histogram of the datan, bins, patches = plt.hist(x, 50, normed=1, facecolor='g', alpha=0.75)plt.xlabel('Smarts')plt.ylabel('Probability')plt.title('Histogram of IQ')plt.text(60, .025, r'$\mu=100,\ \sigma=15$')plt.axis([40, 160, 0, 0.03])plt.grid(True)

  每個text()命令都會返回一個matplotlib.text.Text執行個體,就像之前處理曲線一樣,你可以通過使用setp()函數來傳遞關鍵詞參數來定製文本的屬性。

t=plt.xlabel('my data',fontsize=14,color='red')

  在文本中使用數學運算式

  matplotlib在任何文本中都接受Text運算式。

  Tex運算式是有兩個dollar符號環繞起來的,比如的Tex運算式如下

plt.title(r'$\sigma_i=15$')

  參考文獻:

  [1] Pyplot Tutorial

  

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.