1. 程式人生 > >使用matplotlib繪製圖表

使用matplotlib繪製圖表

我們先來看什麼是Figure和Axes物件。在matplotlib中,整個影象為一個Figure物件。在Figure物件中可以包含一個,或者多個Axes物件。每個Axes物件都是一個擁有自己座標系統的繪圖區域。其邏輯關係如下:

                                                      

以下整個影象是fig物件。我們的繪圖中只有一個座標系區域,也就是ax。此外還有以下物件。(括號中表示物件的基本型別)

                                                    

Title為標題;

Axis為座標軸;

Label為座標軸標註;

Tick為刻度線;

Tick Label為刻度註釋。

各個物件之間有下面的物件隸屬關係:

                                                                 

(yaxis同樣有tick, label和tick label,沒有畫出)

儘管data是資料繪圖的關鍵部分,也就是資料本身的圖形化顯示,但是必須和xaxis, yaxis, title一起,才能真正構成一個繪圖區域axes。一個單純的,無法讀出刻度的

座標

座標是計算機繪圖的基礎。計算機螢幕是由一個個畫素點構成的。想要在螢幕上顯示影象,計算機必須告訴螢幕每個畫素點上顯示什麼。所以,最貼近硬體的座標體系是以畫素為單位的座標體系。我們可以通過具體說明畫素位置來標明顯示器上的某一點。這叫做顯示座標

(display coordinate),以畫素為單位。

然而,畫素座標不容易被納入繪圖邏輯。相同的程式,在不同的顯示器上就要調整畫素值,以保證影象不變形。所以一般情況下,還會有影象座標資料座標

影象座標將一張圖的左下角視為原點,將影象的x方向和y方向總長度都看做1。x方向的0.2就是指20%的影象在x方向的總長,y方向0.8的長度指80%的y方向總長。(0.5, 0.5)是影象的中點,(1, 1)指影象的右上角。比如下面的程式,我們在使用add_axes時,傳遞的引數中,前兩個元素為axes的左下角在fig的影象座標上的位置,後兩個元素指axes在fig的影象座標上x方向和y方向的長度。fig的影象座標稱為Figure座標

,儲存在為fig.transFigure

線是沒有意義的。xaxis, yaxis, title合起來構成了資料的輔助部分(data guide)。

例程1:

#!/usr/bin/env python  
import matplotlib.pyplot as plt  
  
plt.plot([10, 20, 30])  
plt.xlabel('tiems')  
plt.ylabel('numbers')  
plt.show()

例程二:

    #!/usr/bin/env python  
    # -*- coding: utf-8 -*-  
      
    import numpy as np  
    import matplotlib.pyplot as plt  
      
    t = np.arange(0.0, 1.01, 0.01)  
    s = np.sin(2*2*np.pi*t)  
      
    plt.fill(t, s*np.exp(-5*t), 'r')  
    plt.grid(True)  
      
    #儲存為PDF格式,也可儲存為PNG等圖形格式  
    plt.savefig('D:\\test.pdf')  
    plt.show()  

例程三:

import numpy as np
import matplotlib.pyplot as plt

x  = [4,5,5,7,8]
t1 = [1,2,4,4,6]
t2 = [1,2,3,4,5]

plt.figure(1)

plt.plot(t1,'k')
plt.scatter(x,t2,s=2,alpha=1)

plt.show()

例程四:

import numpy as np
import matplotlib.pyplot as plt

x  = [1,2,3,4,5]
t1 = [1,2,3,4,5]
t2 = [1,4,6,8,10]
t3 = [1,8,9,10,20]

plt.figure(1)

#add line
plt.plot(t1,'r')

#add circle
plt.plot(t2,'o')

#add dian
plt.scatter(x,t2,s=2,alpha=1)


plt.xlabel('date(2000+)')
plt.ylabel('house prices')
plt.title('just testing for line and pot')



  • title : 設定圖表的標題
  • ylim : 設定Y軸的範圍
  • legend : 顯示圖示最後呼叫plt.show()顯示出我們建立的所有繪圖物件。

import numpy as np
import pylab as pl
x = [1,2, 3,4, 5]# Make an array of x values
y = [1,4, 9,16, 25]# Make an array of y valuesfor each x value
pl.plot(x, y)# use pylab to plot x and y
pl.show()# show the plot on the screen

                                                           image

                                                                             image

                                                                                                        image



參考文獻:

http://www.cnblogs.com/vamei/archive/2013/01/30/2879700.html

http://blog.csdn.net/dyx1024/article/details/7296748

http://www.2cto.com/kf/201407/317115.html

http://www.tuicool.com/articles/7zYNZfI

http://www.it165.net/pro/html/201406/15941.html