編譯:yxy
出品:ATYUN訂閱號
Matplotlib是最受歡迎的二維圖形庫,但有時讓你的圖變得像你想象中好並不容易。
如何更改圖例上的標籤名稱?如何設置刻度線?如何將刻度更改爲對數刻度?如何在我的圖中添加註釋和箭頭?如何在我的圖中添加網格線?
本文收集了有關如何自定義Matplotlib圖的常見問題和答案。這可以作爲快速進行Matplotlib繪圖的一個很好的速查表,而不是Matplotlib庫的完整介紹。如果你不熟悉此庫,請查看官方文檔。本文介紹的主題包括圖和圖的屬性,座標軸,圖例,註釋和保存圖。
開始
首先,請確保導入matplotlib。
import matplotlib.pyplot as plt
在Jupyter Notebook中,你可以在下面加入這一行,這樣你就不必每次都想要製作一個圖時都調用plt.show()。
%matplotlib inline
還有,如果你不希望<matplotlib.collections.PathCollection at 0x1182bc710>這個煩人的消息出現,只需在你的代碼後添加一個分號,如下面的第二張圖所示。
加分號之前:
之後:
圖和子圖
問:如何增加圖的尺寸?
很多時候,默認大小太小。你可以添加參數figsize並以英寸爲單位指定寬度和高度,如下所示。
plt.figure(figsize=(20,10))
問:什麼是子圖?如何創建和操作子圖?
子圖是一個圖中一組較小的座標軸。下面是2 x 2形式的四個子圖的示例。
這些子圖是使用下面的代碼創建的。我們調用plt.subplot
並指定三個數字。它們指的你需要的行數,列數和子圖號。
for iin range (1,5):
plt.subplot(2,2, i)
plt.text(0.5,0.5,str((2,2, i)), ha=’center’, fontsize= 10)
plt.tight_layout()
在上面的子圖中,圖中的文本引用排序了三個數字。子圖編號的順序是從左上角按行,從數字1開始。例如,左上圖是子圖編號1,右上圖是子圖編號2,左下圖是子圖編號3,右下圖是4號子圖。
請注意,你必須專門調用plt.subplot(2, 2, 1)以激活該子圖。
問:我的子圖排列看起來不太好。我如何解決它?
這是一個你的子圖太擠的例子。我們可以通過調用plt.tight_layout()它來修理它。它清理子圖之間的邊距以獲得更清晰的外觀。
調用之前
之後
問:。如何在我的圖中添加網格線?
plt.grid(True)
風格和屬性
問:如何更改線條顏色、寬度或樣式?
你可以傳入參數color,linewidth和linestyle。
plt.plot(x,y,color='green',linewidth= 2,linestyle=“- ”)
以下是你可以設置的一些linestyle選項。
問:如何更改標記樣式或顏色?
你可以傳遞參數marker和color,如下所示。
plt.scatter(x,y,marker='o',color='red')
以下是你可以根據自己的喜好設置marker選項。
問:如何更改線條的透明度?
將alpha參數傳遞入你的圖。alpha的設置範圍爲0到1,其中0表示完全透明,1表示不透明。
plt.plot(x,y,alpha= 0.1)
下圖說明了在alpha爲0.9、0.5和0.1時透明度的情況。
圖例
問:如何在我的圖中添加圖例?
如果圖例未自動顯示在圖表上,則可以使用以下代碼顯示圖例。
plt.legend()
問:如何更改圖例出現位置?
你可以選擇將upper right、upper left、lower left、lower right、right、center left、center right、lower center、upper center和center傳遞給loc參數。
plt.legend(loc='right right');
問:如何更改圖例上的標籤名稱?
選項1:
假設你有十個圖例項,而你只想更改第一個圖例項的標籤。將圖例保存到變量L後,你可以使用L.get_text()[0]調用圖例的第一項,並手動將文本設置爲您想要的內容。在下面的示例中,我將我的圖例設置爲’line123’。
L= plt.legend()
L.get_texts()[0] .set_text('line123')
選項2:
或者,你可以創建標籤名稱列表,並將圖例標籤設置爲你創建的列表。
mylabels= ['happy','sad','nervous','angry','neutral']
plt.legend(labels= my_labels)
問:如何更改圖例的大小?
要設置該特定圖的圖例大小,可以傳入fontsize參數。
plt.legend(fontsize= 10);
或者,你也可以不使用數字,如:
plt.legend(fontsize='x-large');
座標軸
問:如何命名我的x和y軸標籤?如何更改字體大小?
根據你要使用的軸,你可以調用“ylabel”或“xlabel”,如下所示。第一項是軸所需的名稱。要設置字體大小,需要插入fontsize參數,如下所示。
plt.ylabel('Income', fontsize= 15)#for y label
plt.xlabel('Age', fontsize= 15)#for x label
問:如何設置刻度線?
第一個參數是你要設置刻度線的位置,第二個參數是刻度線旁邊的標籤。
plt.yticks([0,2,4,6,7,10],[“0”,“2B”,“4B”,“8B”,“10B”])
plt.xticks([0,1,2] ,3,4,5],[“0”,“1oz”,“2oz”,“3oz”,“4oz”])
問:如何設置座標軸的範圍?
plt.ylim(-1.0,1.0)#for y axis
plt.xlim(0,50)#for x axis
問:如何將刻度更改爲對數刻度?
plt.yscale(“log”)#for y axis
plt.xsclae("log")#for x axis
註釋
問:如何在我的圖中添加註釋和箭頭?
我們可以創建註釋並指定其要註釋的xy參數的座標。xytext定義標籤的座標。如果我們還想要箭頭,我們將需要使用arrowprops來顯示箭頭。
plt.annotate('sentosa',xy=(5.0,3.5),xytext(4.25,4.0),arrowprops= {'color':'red'})
保存圖
現在你已根據自己的喜好定製了圖,需要進行保存!我調用我的圖“plot1”(名字你可以自己起)!這會將圖保存到你的工作目錄。
plt.savefig('plot1.jpg')
注意
如果你的Jupyter Notebook中有大量的圖,你的Notebook會變得非常慢,在我參與項目時遇到過這種情況。所以,可以將鼠標懸停在圖的左側,這會出現如下所示的灰色框。雙擊灰色框,就可以隱藏圖,使Jupyter Notebook可以正常運行,同時也方便滾動。