如何在 Python 中的組合條形圖中添加註釋?
簡介
隨著資料視覺化成為每個資料分析專案不可或缺的一部分,條形圖成為表示分類資料的絕佳工具。特別是組合條形圖,當我們想要並排比較多個組時非常有用。
語法和用例
可以在條形圖中添加註釋,以提供有關所呈現資料的其他資訊或說明。matplotlib 的註釋函式可用於將這些註釋新增到每個條形。該函式採用以下引數:-
text − 要在註釋中顯示的文字。
xy − 要註釋的點 (x, y)。
xytext − 確定文字位置。
ha − 文字的水平對齊方式(例如“center”、“left”、“right”)。
va − 文字的垂直對齊方式(例如“center”、“top”、“bottom”)。
使用註釋可以提高組合條形圖的可讀性和可解釋性。以下兩種情況下,在組合條形圖中為條形添加註釋可能會有所幫助:-
比較絕對值和相對值
在組合條形圖中,比較高度不同的條形的絕對值可能很困難。如果用相應的數值為條形添加註釋,讀者可能會更容易比較每個組的絕對值。透過用相對值註釋條形,還可以使讀者更清楚地瞭解每個類別中值的分佈。
突出顯示顯著差異
組合條形圖可用於比較多個組的均值或比例。將 p 值或置信區間新增到條形可能有助於讀者識別組之間的顯著差異。此外,您可以透過在條形上方放置星號或其他符號來直觀地突出顯示具有統計學意義的差異的條形。這可以幫助讀者理解統計分析的結果並從資料中得出推論。
程式碼和解釋
演算法
匯入必要的庫:matplotlib 和 numpy
建立要繪製的資料集
使用 matplotlib 的 subplots 函式定義圖形和軸物件
使用 bar 函式繪製組合條形圖
迴圈遍歷每個條形,並使用 matplotlib 的 annotate 函式新增文字註釋
import matplotlib.pyplot as plt
import numpy as np
# create sample dataset
data = np.array([[3, 4, 5], [2, 3, 4]])
# define labels and groups
labels = ['Group 1', 'Group 2']
groups = ['A', 'B', 'C']
# define figure and axis objects
fig, ax = plt.subplots()
# plot the grouped bar chart
width = 0.35
x = np.arange(len(groups))
ax.bar(x - width/2, data[0], width, label=labels[0])
ax.bar(x + width/2, data[1], width, label=labels[1])
# add text annotations to each bar
for i, j in enumerate(data):
for x_val, y_val in zip(x, j):
ax.annotate(str(y_val), xy=(x_val+i*width-width/2, y_val), ha='center', va='bottom')
# add labels and legend
ax.set_xticks(x)
ax.set_xticklabels(groups)
ax.set_xlabel('Groups')
ax.set_ylabel('Count')
ax.legend()
plt.show()
首先,匯入完成任務所需的必要庫,特別是眾所周知的 numpy 和 matplotlib。
透過應用具有兩行三列的 numpy 陣列來生成一個示例資料集。定義組和條形的標籤是為了正確識別繪圖。
為了建立繪圖,透過 matplotlib 的 subplots 函式生成圖形和軸物件。然後使用 bar 函式繪製組合條形圖,其中每個條形的寬度指定為 0.35。然後使用相應的 data 引數選擇每個組的條形,並使用 labels 引數進行選擇。
在巢狀的 for 迴圈內使用 annotate 函式為每個條形新增文字註釋。該函式接受每個條形的 x 和 y 座標以及條形的高度作為文字註釋。
使用 matplotlib 的 set_xticks、set_xticklabels、set_xlabel、set_ylabel 和 legend 函式對繪圖進行標記,這些函式允許對 x 軸和 y 軸、繪圖示題進行正確的標記,並在繪圖上包含圖例。
結論
在 Python 中的組合條形圖中添加註釋可以提供有關所呈現資料的其他資訊或說明。使用 matplotlib 的註釋函式,我們可以按照本文中概述的分步演算法輕鬆地為每個條形新增文字註釋。
資料結構
網路
關係資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP