首頁  >  文章  >  後端開發  >  如何在 Matplotlib 堆積長條圖中將資料標籤置中?

如何在 Matplotlib 堆積長條圖中將資料標籤置中?

DDD
DDD原創
2024-11-24 00:41:10426瀏覽

How to Center Data Labels in a Matplotlib Stacked Bar Chart?

有居中標籤的堆疊條形圖:使用bar_label 的改良解決方案

在matplotlib 中,一種精確地將堆疊中的資料標籤居中的改進方法使用bar_label 函數可以使用長條圖。操作方法如下:

  1. 導入必要的模組:先導入必要的函式庫。
import pandas as pd
import matplotlib.pyplot as plt
  1. 建立並填滿您的 DataFrame:要建立堆積條形圖,建議使用一個 pandas 資料框。這是一個包含三列的範例 DataFrame:「A」、「B」和「C」。
# sample DataFrame
df = pd.DataFrame({'A': [45, 17, 47], 'B': [91, 70, 72], 'C': [68, 43, 13]})
  1. 繪製堆疊長條圖:利用用於繪製堆疊長條圖的 DataFrame
ax = df.plot(kind='bar', stacked=True, figsize=(8, 6), rot=0, xlabel='Class', ylabel='Count')
  1. 標記條形:現在,讓我們標記條形,同時確保它們居中。使用 bar_label 來完成此操作。
for c in ax.containers:
    ax.bar_label(c, label_type='center')

可選自訂

  • 零或小標籤:適用於零的片段或較小的值,根據需要調整標籤可見度。例如,僅當值超過某個閾值時才顯示值或使用 label_type='edge' 選項。
labels = [v.get_height() if v.get_height() > 0 else '' for v in c]  # for segments with small or zero values
  • 自訂格式:修改標籤格式以符合您的要求。
ax.bar_label(c, fmt=lambda x: f'{x:.0f}' if x > 0 else '', label_type='center')  # to show no decimal places

Seaborn替代方案

如果您喜歡使用seaborn,您也可以建立堆疊條形圖並為條形圖加上標籤。

  1. 準備DataFrame:類似到 matplotlib,用資料建立一個 pandas DataFrame。
  2. 將 DataFrame 轉換為 long form:seaborn要求DataFrame為長格式,這可以使用melt來實現。
  3. 繪製圖表並標記條形:繪製堆疊條形圖並應用bar_label 與 matplotlib 中一樣。

以上是如何在 Matplotlib 堆積長條圖中將資料標籤置中?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn