Python Matplotlib繪圖操作極簡筆記

前言

一般用到的都是matplotlib中的pyplot庫,一般習慣上寫爲:

import matplotlib.pyplot as plt

所以接下來所有的繪圖操作基本都會用到plt.打頭的函數。

然後還要解決一下圖中中文亂碼以及負號無法顯示的情況:

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

寫在畫圖操作之前,plt.rcParams用於設置繪圖過程中所用的默認值。

 

基本操作

繪製散點圖、柱狀圖、折線圖,分別爲:

plt.scatter(x, y)
plt.bar(x, y)
plt.plot(x, y)

最基本的兩個參數就是x和y,一般爲一維列表,x與y的size要一致,x[i]與y[i]表示圖中的一個點的x與y軸座標。

 在繪圖後,最後要使用plt.show()顯示出圖像。

無論多少張圖,一句plt.show()即可。

生成的圖像可以手動調節大小,並保存到本地:

若要自動保存,可:

plt.savefig(path)

一般寫在plt.show()之前。

 

設置圖像特徵

圖像大小和精細程度

plt.figure(figsize=(length, width))

length和width爲兩個float,代表圖像長和寬,默認爲6.4和4.8,單位是英寸,但換算到不同的屏幕上……鬼知道是多大,所以參考着默認值來設吧。

此外,plt.figure中還有有參數dpi,可設置圖像的精細程度,其值爲整型,默認值爲100,單位爲每英寸長度內的像素點數。

繪製多個子圖

假如要繪製如下的三張圖:

此時需要用到plt.subplot來編排每個子圖的位置,僅需三個參數:row、column、index,表示將整張畫布分成row行、column列,其中當前所繪製的圖的編號爲index,因此有n張子圖要畫,則plt.subplot則要調用n次,爲每張子圖指派位置。

假如說我要將畫布分成如下的四塊區域:

其中紅色箭頭表示編號(index)的順序,此時row=2,column=2。

那對於上面例子中的三張圖,左上角的圖位置應該爲plt.subplot(2, 2, 1),左下角的圖位置爲plt.subplot(2, 2, 3)。需要注意的是,右側圖不是plt.subplot(2, 2, 3和4),從整張畫布來看,對於右圖,其實是plt.subplot(1, 2, 2),也就是將畫布分成左右兩部分,右圖直接佔用了右邊一半。具體代碼:

import matplotlib.pyplot as plt 

plt.subplot(1,2,2)
plt.plot([i for i in range(10)], [j*j for j in range(10)])

plt.subplot(2,2,1)
plt.plot([1,2,3], [5,9,10])

plt.subplot(2,2,3)
plt.bar(['a', 'b', 'c'], [1,3,5])

plt.show()

每次使用plt.subplot爲子圖指派位置後,後面就應該接上繪製該子圖的代碼。

另外,plt.subplot的參數可以簡寫,plt.subplot(1, 2, 2)可以去掉逗號,直接寫成plt.subplot(122),因此,這也就要求原來的參數應小於10。

 

設置曲線特徵

X、Y軸刻度與範圍

以X軸爲例,主要參數爲一個列表,列表每一項爲X軸的一個刻度。注意:這個列表與前面繪圖中plt.plot(x, y)中的列表x不一樣,繪圖中的x表示的圖中點(柱)的x軸座標,在沒有使用該刻度設置函數的前提下,實際成圖的時候會通過x中的座標範圍而自動設置刻度。

plt.xticks(list)

可以通過numpy.arrange來方便快速地生成刻度列表:

plt.xticks(numpy.arrange(0, 10, 1))

顏色

plt.plot(time, east, color='red', label='Eastern Region')
plt.plot(time, west, color='green', label='Western Region')

顏色可以爲單個str值,指定該條曲線(散點,柱)的統一的顏色,也可以爲與x、y同樣size的string類型的列表,爲每個值指定顏色(爲每個值設置顏色不適用於折線圖)。

單圖繪製多條曲線

在同一座標軸下繪製多條曲線,直接調用多個plt.plot()或plt.scatter()等函數即可,爲了使多條曲線間具有區分度,可設置曲線的標籤和顏色,若要在圖中顯示圖例(說明什麼顏色的曲線表示什麼),則label必須要設置,並在繪圖函數後加:

plt.legend()

 

爲圖像添加文字信息

設置x、y軸的信息,從而進行單位說明,並設置表名:

plt.xlabel('City')
plt.ylabel('Score')
plt.title('Economic vitality scores of cities in 2028')

若要在圖中每個點、柱、折線處顯示具體數值,可以:

for i, j in zip(x, y):
    plt.text(i, j, j)

前面兩個參數表示文字顯示位置,這個位置爲圖中柱、點、折線圖拐點的x、y座標,第三個參數表示文字內容。

當然,這些文字的大小、顏色、樣式均可在相應函數中進行設置,在此就不展開說了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章