matplotlib的使用方法
先導入相應的模塊
from matplotlib import pyplot as plt
再使用plt中特有的方法來進行畫圖。
- 柱狀圖——plt.bar(專門用來比較大小)
- 直方圖——plt.barh(專門用來查看分佈)
- 餅狀圖——plt.pie(專門用來查看比例)
- 折線圖——plt.plot(專門用來繪製相應函數圖像)
- 散點圖——plt.scatter
- 等高線圖——plt.contour
(注意區分直方圖和柱狀圖的區別)
這些方法接受兩個數組類型(包括ndarray類型以及所有可以轉化爲ndarray的類型)
我們可以使用numpy.linspace來生成相應的數組進行測試
自定義圖形的樣式
就是再相應的繪圖函數中添加相應的關鍵字參數,比如:
- color——顏色
- linestyle——線型的樣式
- linewidth——線型的寬度
- alpha——不透明度
(除此之外還有很多,而且這裏只給出了關鍵字參數的名字,並沒有給出我們應該給他們賦予什麼樣的參數,所以我建議還是移步至官方文檔)
組合圖形樣式
我們繪圖中還有一個需求就是希望把不同的圖像畫在一起。當然我們plt肯定是實現了這些,只有當我們把使用相同的x內容的時候,matplotlib纔會把這些圖形都放在一起。
組合圖形的時候,可能需要一種更加高級的操作。
那就是自己搭建圖片的環境。
- 首先,先創建畫板對象fig = plt.figure()
- 在畫布對象的基礎上創建畫布對象axes = fig.add_axes([a, b, c, d])——注意這裏a, b, c, d分別代表了畫布左下角的兩個座標,以及畫布的寬高。
- 再使用axes的**plot方法(或者其它的方法)**畫圖。
還有一種方法也可以實現子圖的繪製。
那就是利用plt.subplots().
然後通過這個函數返回的fig和axes對象(尤其是axes對象),
我們就能定製我們的輸出了
規範畫圖方法
我們需要一套約定,來規範我們的畫圖流程,這樣我們就能避免想怎麼做,就怎麼做的缺點。
一個比較好的建議是:不要僅僅是使用plt.plot來繪製圖像,而應該使用plt.subplots方法來使用
·添加圖表題,圖例,xy軸代表的意義
- 添加圖標題——axes.set_title()
- 添加xy軸名稱——axes.set_xlabel(); axes.set_ylable();
- 添加圖例——axes.legend();
(你要知道圖例在我們的axes上是一個單獨的單元,我們可以通過傳入一個list對象來進行繪製)
·添加座標軸範圍
使用**set_ylim()和set_xlim()**來設定座標軸的範圍
參數是一個兩個元素的列表
·圖形標註方法
如果我們能夠在我們的圖形上做一些標註,那我們的圖形肯定會更加清晰。
你要知道的是我們在我們的axes上標註,只有plt.text方法,這個方法接受三個參數:
- 文本的x座標
- 文本的y座標
- 文本的內容,可以使用c的字符串格式化語法來做
一般而言我們會在柱狀圖上標註柱子所代表的大小,我們matplotlib自然是提供了一個很簡單的方法來幫我們實現這個需求:
bars = axes.bar(x_bar, y_bar, color='blue', label=x_bar, width=2) # 繪製柱形圖
for i, rect in enumerate(bars):
x_text = rect.get_x() # 獲取柱形圖橫座標
y_text = rect.get_height() + 0.01 # 獲取柱子的高度並增加 0.01
plt.text(x_text, y_text, '%.1f' % y_bar[i]) # 標註文字
PS: 文中說我們可以使用pylab來使用類似於matlab的接口,但是這個在我們matplotlib的official document中是discourage的,因爲可能會造成namespace上的一些問題。