
版權聲明:本文爲博主原創文章,未經博主容許不得轉載。 //blog.csdn.net/mao19931004/article/details/51915016 html
由於學習機器學習以及試圖經過python實現相應的算法,所以學習了Matplotlib中的畫圖,那麼就問到,問啥不用matlab呢,答:多一門技術,多一口飯;並且發現Matplotlib的畫圖功能仍是蠻強大的,此次僅僅只是學習了之前在MATLAB裏面會的相應的東西,而後學習一下在python中對應的知識。java
matplotlib在Python中應用最多的2D圖像的繪圖工具包,使用matplotlib可以很是簡單的可視化數據。在matplotlib中使用最多的模塊就是pyplot。pyplot很是接近Matlab的繪圖實現,並且大多數的命令及其相似Matlab.固然,與Matlab相似,須要不少的數學運算,所以numpy這個組件一樣是必不可少的。因此不少人說python+matplotlib+numpy就是MATLAB。固然在此以前,須要配置好相應的環境,在Linux 14.04下版本,利用sublime Text 3能夠很是快捷的搭建好開發環境,能夠參見博客http://blog.csdn.net/mao19931004/article/details/51834616。python
首先,在matplotlib建議使用別名,引入包,這樣方便之後模塊的使用,通常以如下兩句開始:nginx
import numpy as np import matplotlib.pyplot as plt
接下來以繪製正弦餘弦函數曲線爲例,介紹相應的函數。算法
- 使用默認的繪圖屬性繪圖
x=np.linspace(-np.pi,np.pi,256,endpoint=True) C,S=np.cos(x),np.sin(x) plt.plot(x,C) plt.plot(x,S)
- 對線條的顏色,寬度進行設置,就像在matlab中同樣:
plt.plot(x,C,color='red',linewidth=2.5,linestyle='-') plt.plot(x,S,color='blue',linewidth=2.5,linestyle='-')
- 對plot函數的講解
上面介紹了簡單的繪圖,用的基本上都是plot,所以有必要對plot函數進行簡單的介紹。官網參考網址:plot使用。熟悉Matlab的人對plot不會陌生,在matplotlib中的使用方式大體和Matlab中是一致的,使用plot,能夠對點的標記的樣式以及線條的樣式進行設置。ubuntu
函數的聲明爲:matplotlib.pyplot.
plot
(*args, **kwargs)。args的參數的長度是不定 的,能夠設置不少的屬性,kwargs主要是應用於設置線條的屬性。對於標註和線條的樣式,能夠經過簡單的字符來表示:小程序
以及標註和線條的顏色:windows
固然線條的顏色能夠以其餘方式定製。好比16進制的字符串('#008000'
)或者是RGB、RGBA元組的方式RGB or RGBA ((0,1,0,1)
) 來實現不一樣的顏色。
在接下來會應用到更多的屬性。對於Line2D的具體細節,也就是線條的屬性等,能夠進一步查閱Line2D.
- 設置橫軸、縱軸的界限以及標註
不少時候,須要設置橫軸和縱軸的界面,從而獲得更加清晰明瞭的圖形:
plt.xlim(X.min()*1.1, X.max()*1.1) plt.ylim(C.min()*1.1, C.max()*1.1)此外爲了更好的表示橫軸和縱軸數據的含義,能夠經過ticks對橫軸和縱軸的含義進行設置和定製。
plt.xlim(x.min()*1.1, x.max()*1.1) plt.xticks([-np.pi, -np.pi/2, 0, np.pi/2, np.pi], [r'$-\pi$', r'$-\pi/2$', r'$0$', r'$+\pi/2$', r'$+\pi$']) plt.ylim(C.min()*1.1,C.max()*1.1) plt.yticks([-1, 0, +1], [r'$-1$', r'$0$', r'$+1$'])看到yticks和xticks後面一串的數字,看到就以爲可能有點不知道寫的什麼,熟悉LaTex的人以爲咱們這種想法的人有點傻。其實就是很簡單的字符串,可是是爲了方便Latex去解析這段字符串。通常以r開始,中間的字符串用$字符串$包圍起來。這裏是matplotlib中的有關LaTex的使用介紹: Latex的使用
上面的\pi表明的意義就是π。如下是有關希臘字符的表示:
最後的顯示圖像爲:
這樣數據的意義就更加清晰明瞭了。
- 設置Spines的位置。
Spines are the lines connecting the axis tick marks and noting the boundaries of the data area. They can be placed at arbitrary positions。
Spines應該能夠理解爲座標軸的位置。可是也不全是,由於它分爲上下左右四個位置,就如上圖的四個邊界,那麼左邊界和下邊界就是咱們一般認爲的橫座標和縱座標。咱們能夠將上邊界和右邊界隱藏,同時將左邊界和下邊界移動至中心的位置,看看效果:
這樣就和咱們一般畫數學曲線的方式就同樣了。
實現的完整代碼是:
import numpy as np import matplotlib.pyplot as plt ax = plt.subplot(111) ax.spines['right'].set_color('none') ax.spines['top'].set_color('none') ax.xaxis.set_ticks_position('bottom') ax.spines['bottom'].set_position(('data',0)) ax.yaxis.set_ticks_position('left') ax.spines['left'].set_position(('data',0)) x=np.linspace(-np.pi,np.pi,256,endpoint=True) C,S=np.cos(x),np.sin(x) plt.plot(x,C,color='red',linewidth=2.5,linestyle='-',label=r'$cos(t)$') plt.plot(x,S,color='blue',linewidth=2.5,linestyle='-',label=r'$sin(t)$') plt.xlim(x.min()*1.1, x.max()*1.1) plt.xticks([-np.pi, -np.pi/2, 0, np.pi/2, np.pi], [r'$-\pi$', r'$-\pi/2$', r'$0$', r'$+\pi/2$', r'$+\pi$']) plt.ylim(C.min()*1.1,C.max()*1.1) plt.yticks([-1, 0, +1], [r'$-1$', r'$0$', r'$+1$']) plt.show()
- 添加圖例說明
說到做圖,固然必需要有圖例,圖例是幫助咱們理解曲線指代的類型,若是讓咱們不去仔細分析曲線,就能夠知道曲線指代的類型。好比上圖的正弦和餘弦,咱們要通過分析事後,才知道紅色是餘弦函數,藍色是正弦函數,所以圖例就很是重要的幫助咱們分析圖形。
在畫圖時候,咱們須要多線條加上label,這樣才能夠在最後將圖例顯示出來。
plt.plot(x,C,color='red',linewidth=2.5,linestyle='-',label=r'$cos(t)$') plt.plot(x,S,color='blue',linewidth=2.5,linestyle='-',label=r'$sin(t)$') plt.legend(loc='upper left',frameon=False)

位置的可選參數有:
函數的參數的關鍵字有:
大體的plot的繪圖方式入門就這麼多,固然plot還有不少不少的內容,須要的什麼比較好的方式繪圖,就能夠去參閱相關的資料,固然之後若是遇到新的內容,會繼續介紹。
- 上一篇 Qt (六) -- Qt5.5.1實現通用串口程序
- 下一篇 numpy簡單入門學習