使用Matplotlib繪製圖的常見問題和答案

編譯: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可以正常運行,同時也方便滾動。

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