如何在 Matplotlib 圖形上手動新增帶顏色框的圖例?
Matplotlib 是 Python 中一個流行的資料視覺化庫,以其靈活性和高質量的視覺化效果而聞名。透過本教程,您將學習如何在 Matplotlib 圖形上建立帶顏色框的圖例,使您的視覺化效果更具資訊性和視覺吸引力。
在深入研究程式碼之前,瞭解圖例的不同元素非常重要。圖例是用於標記我們繪圖中不同顏色、標記或線條的元素的鍵。透過新增圖例,我們可以理解正在呈現的資料,並使觀眾更容易解讀我們的視覺化效果。在下一節中,我們將瞭解在 Matplotlib 圖形上建立帶顏色框的圖例的語法。
語法
要在 Python 中的 Matplotlib 圖形上手動新增帶顏色框的圖例,我們可以使用以下語法:
# Import libraries import matplotlib.patches as mpatches # Creating legend with color box color_patch = mpatches.Patch(color='red', label='legend') plt.legend(handles=[color_patch])
在上述語法中,顏色框是透過使用 **mpatches.Patch** 函式並將其 color 引數設定為 'red' 來建立的。生成的藍色顏色框透過使用 **plt.legend** 函式並將 handles 引數設定為 **[color_patch]** 新增到圖例中。雖然顏色框本身在繪圖中不可見,但它在圖例中顯示為彩色矩形,位於標籤文字旁邊。可以使用 **mpatches.Patch** 函式中的其他引數(例如 **linewidth、edgecolor 和 facecolor**)調整顏色框的大小和形狀。以下示例對此進行了很好的解釋。
示例
在此示例中,第一步是匯入必要的庫,即 **matplotlib.patches 和 matplotlib.pyplot**。然後,我們使用 **plt.plot()** 函式建立一個簡單的線形圖,並將 x 座標和 y 座標列表作為引數傳遞,以及線的顏色。
接下來,我們使用 **plt.title()** 函式設定繪圖的標題。此程式碼的主要重點是建立帶顏色框的圖例。我們透過使用 **mpatches.Patch()** 函式建立一個補丁來實現這一點,該函式接收多個引數,例如補丁的顏色、要在圖例中顯示的標籤以及其他引數,如 linewidth 和 alpha。然後,我們建立一個顏色為紅色的 color_box 補丁,並將其標籤設定為“示例圖例”。我們還將 **linewidth** 設定為 12,並將 alpha 設定為 0.5 以調整補丁的大小和透明度。
最後,我們使用 **plt.legend()** 函式將補丁新增到圖例中,並將 handles 引數與要包含在圖例中的補丁列表一起傳遞。我們還將圖例的位置設定為“右上角”,並使用 **framealpha** 引數和 **frameon** 引數調整框架的透明度。
總的來說,透過調整 **mpatches.Patch()** 函式中的引數,您可以自定義顏色框的大小、形狀和顏色以滿足您的視覺化需求。最後使用 **plt.show()** 顯示繪圖。
import matplotlib.patches as mpatches import matplotlib.pyplot as plt # Creating plot plt.plot([1, 2, 3, 4], color='blue') plt.title('Example 1') # Creating legend with color box color_box = mpatches.Patch(color='red', label='Example Legend', linewidth=12, alpha=0.5) plt.legend(handles=[color_box], loc='upper right', framealpha=0.5, frameon=True) # Show plot plt.show()
輸出
示例
該示例匯入了所需的庫,包括 Plotly Express,用於使用 **px.data.tips()** 函式匯入 tips 資料集,以及 Matplotlib 的 pyplot 和 patches 用於構建繪圖和圖例。
散點圖是使用 matplotlib 的 **ax.scatter()** 函式建立的。x 軸表示總賬單金額,y 軸表示小費大小。'c' 引數用於根據 tips 資料集的 'sex' 列指定標記的顏色。**.map()** 函式用於將字串值“Female”和“Male”對映到相應的顏色值“red”和“blue”。
為了在示例中建立圖例,**mpatches.Patch()** 函式用於手動建立具有特定顏色和標籤的“Female”和“Male”顏色框。然後,這些補丁與補丁的 handles 和繪圖上的位置一起使用 **plt.legend()** 函式新增到繪圖中。透明度和圖例周圍框架的存在也使用 **framealpha** 和 **frameon** 引數進行調整。
最後,使用 **plt.title()、plt.xlabel() 和 plt.ylabel()** 為繪圖新增標題和軸標籤。然後使用 **plt.show()** 顯示繪圖。
import matplotlib.pyplot as plt import matplotlib.patches as mpatches import plotly.express as px # Load tips dataset from plotly.express tips = px.data.tips() # Create scatter plot fig, ax = plt.subplots() ax.scatter(tips['total_bill'], tips['tip'], c=tips['sex'].map({'Female': 'red', 'Male': 'blue'})) # Create a legend with a color box female_patch = mpatches.Patch(color='red', label='Female') male_patch = mpatches.Patch(color='blue', label='Male') plt.legend(handles=[female_patch, male_patch], loc='upper left', framealpha=0.5, frameon=True) # Set plot title and axis labels plt.title('Total Bill vs Tip by Gender') plt.xlabel('Total Bill') plt.ylabel('Tip') # Show plot plt.show()
輸出
結論
總之,在 Matplotlib 圖形上新增帶顏色框的圖例可以成為直觀地表示資料並提高圖形整體可讀性的有用方法。我們可以使用 mpatches.Patch 函式修改顏色框以滿足我們的需求。這包括更改框的大小、形狀和顏色。可以使用 plt.legend 函式將顏色框圖例新增到圖形中,並自定義其位置和外觀。學習可以使處理簡單或複雜的資料受益。