現在我們新增圖後,沒有指定x軸代表什麼,y軸代表什麼,以及這個圖的標題是什麼。因此以下我們通過一些屬性來設定一下。
設定線條樣式:
- 使用plot方法:plot方法就是用來繪製線條的,因此可以在繪製的時候就把線條相關的樣式通過引數傳進去。示例程式碼如下:
plt.plot(x,y,linewidth=2)
- 通過Line2D物件來設定:plot方法會返回一個裝有Line2D物件的列表,比如lines=plt.plot(x1,y1,x2,y2)因為繪製了兩根線條,因此lines中會有兩個2D物件。而如果plot只繪製一根線條,那麼lines中就只有一Line2D物件。拿到這個Line2D物件後就可以通過set_屬性名設定線條的樣式了:
lines = plt.plot(x,y) line = lines[0] line.set_aa(False) #關掉反鋸齒 line.set_alpha(0.5) #設定0.5的透明度
- 使用plt.setp來設定:setp的好處是一次性可以設定多根線條的樣式。示例程式碼如下:
lines = plt.plot(x,y)
plt.setp(lines,linewidth=10,alpha=0.5)
-
更多Line2D屬性:
設定軸和標題:
- 設定軸名稱:可以通過
plt.xlabel
和plt.ylabel
來設定x
軸和y
軸的的名稱。示例程式碼如下:
plt.plot(x,y,linewidth=10,color='red') plt.xlabel("x軸") plt.ylabel("y軸")
預設情況下是顯示不了中文的。需要設定字型。可以通過以下程式碼來實現:
# 載入字型 from matplotlib import font_manager font = font_manager.FontProperties(fname="C:\Windows\Fonts\msyh.ttc") plt.plot(x,y,linewidth=10,color='red') plt.xlabel("x軸",fontproperties=font) plt.ylabel("y軸",fontproperties=font)
載入字型的時候,可以到C:\Windows\Fonts中找你喜歡的並且可以顯示中文的字型。找到字型後,還需要找到字型的真實名稱。方法是右鍵->屬性->安全->物件名稱:
- 設定標題:可以通過plt.title方法來實現。示例程式碼如下:
font = font_manager.FontProperties(fname="C:\Windows\Fonts\msyh.ttc") plt.title("sin函式",fontproperties=font)
- 設定x軸和y軸的刻度:之前我們畫的圖,x軸和y軸的刻度都是matplotlib自動生成的。如果想要在生成圖的時候手動的指定,那麼可以通過plt.xticks和plt.yticks來實現:
plt.xticks(range(0,20,2)) #在x軸上的刻度是0,2,4,6...20
以上會把那個刻度顯示在x軸上。如果想要顯示字串型別,那麼可以再構造一個陣列,這個陣列的長度必須和x軸刻度的長度保持一致。然後傳給xticks的第二個引數。示例程式碼如下:
_x = range(0,20,2) _xticks = ["%d座標"%i for i in _x] plt.xticks(_x,_xticks,fontproperties=font) #在x軸上的刻度是0座標,2座標...20座標
同樣y軸的刻度設定也是一樣的。示例程式碼如下:
_y = np.arange(-1,1,0.25) _yticks = ["%.2f點"%i for i in _y] plt.yticks(_y,_yticks,fontproperties=font)
效果圖如下:
復仇者聯盟電影票房案例:
avenger = [17974.4,50918.4,30033.0,40329.1,52330.2,19833.3,11902.0,24322.6,47521.8,32262.0,22841.9,12938.7,4835.1,3118.1,2570.9,2267.9,1902.8,2548.9,5046.6,3600.8] plt.figure(figsize=(15,5)) plt.plot(avenger,marker="o") font.set_size(10) plt.xticks(range(20),["第%d天"%x for x in range(1,21)],fontproperties=font) plt.xlabel("天數",fontproperties=font) plt.ylabel("票房數(萬)",fontproperties=font) plt.grid()
設定marker:
有時候,我們想要在一些關鍵點上重點標記出來。那麼我們可以通過設定marker來實現。示例程式碼如下:
x = np.linspace(0,20) y = np.sin(x) plt.plot(x,y,marker="o")
我們設定了marker為o,這樣就是會在(x,y)的座標點上顯示出來,並且顯示的是圓點。其中o跟之前的線條樣式的簡寫是一樣的。另外,還可以通過markerfacecolor屬性和markersize來指定標記點的顏色和大小。示例程式碼如下:
### 以下設定標記點的顏色為黑色,尺寸為10 plt.plot(x,y,marker="o",markerfacecolor='k',markersize=10)
設定註釋文字:
有時候需要在圖形中的某個點標記或者註釋一下。那麼我們可以使用plt.annotate(text,xy,xytext,arrowprops={})來實現,其中text是註釋的文字,xy是需要註釋的點的座標,xytext是註釋文字的座標,arrowprops是箭頭的樣式屬性。
示例程式碼如下:
ax = plt.subplot(111) x = np.arange(0.0, 5.0, 0.01) y = np.cos(2*np.pi*t) line, = plt.plot(x, y,linewidth=2) plt.annotate('local max', xy=(2, 1), xytext=(3, 1.5), arrowprops=dict(facecolor='black',shrink=0.05), ) plt.ylim(-2, 2) plt.show()
設定圖形樣式:
如果想要調整圖片的大小和畫素,可以通過plt.figure(num=None, figsize=None, dpi=None, facecolor=None, edgecolor=None, frameon=True)來實現。 其中num是圖的編號,figsize的單位是英寸,dpi是每英寸的畫素點,facecolor是圖片背景顏色,edgecolor是邊框顏色,frameon代表是否繪製畫板。
示例程式碼如下:
plt.figure(figsize=(20,8),dpi=80) ### 其他的繪製圖形的程式碼
我們也可以使用grid方法,來顯示圖片的網格:
plt.plot(x,y,color="r") plt.grid()
儲存圖片:
可以呼叫plt.savefig(path)來儲存當前的圖片。
示例程式碼如下:
plt.savefig("./abc.png")