工具指南

Python堆疊長條圖:Matplotlib與Pandas完整指南

堆疊長條圖對於展示各組成部分如何跨類別貢獻於總量至關重要。Python透過matplotlib的低階控制與pandas便捷的繪圖介面提供多種方法。本指南為Python中所有常見堆疊長條圖場景提供即拿即用的程式碼片段。

Python堆疊長條圖:Matplotlib與Pandas完整指南互動範例

使用Matplotlib建立基礎堆疊長條圖

基本方法使用matplotlib的'bottom'參數將長條堆疊在一起:

使用Pandas建立堆疊長條圖

Pandas透過plot()方法讓堆疊長條圖變得異常簡單:

水平堆疊長條圖

對於長類別標籤或排名資料,使用水平堆疊長條圖:

100%堆疊長條圖(正規化)

透過將資料正規化到100%來顯示比例而非絕對值:

為堆疊長條圖添加資料標籤

在每個分段上顯示精確值以便準確讀取:

自訂顏色與樣式

控制堆疊長條圖的每個視覺方面:

  • 自訂顏色:向color參數傳遞清單或使用colormap
  • 邊緣顏色:添加edgecolor='black'設定長條邊框
  • 透明度:使用alpha=0.8實現半透明長條
  • 陰影圖案:添加hatch='/'實現紋理填充(無障礙存取)
  • 調色盤:使用plt.cm.viridis或seaborn調色盤

處理大型資料集

當處理許多類別或大型資料集時,考慮以下技巧:

  • 將類別限制為前N個值以提高可讀性
  • 對於10個以上類別使用水平長條圖
  • 將小分段聚合成「其他」類別
  • 考慮使用Plotly進行互動式視覺化以探索資料
  • 大型圖表儲存為向量格式(PDF/SVG)

常見陷阱與解決方案

在Python中建立堆疊長條圖時避免這些常見問題:

  • bottom參數的NumPy陣列:將清單轉換為NumPy陣列以進行數學運算
  • 圖例順序:使用handles[::-1]反轉圖例順序以匹配視覺堆疊順序
  • 標籤擁擠:使用rotation=45使x軸標籤傾斜
  • 長條重疊:確保所有資料系列長度相同
  • 記憶體問題:建立多個圖表時使用plt.close()關閉圖形

ChartGen.ai:無程式碼替代方案

Python堆疊長條圖需要編碼知識與除錯時間。ChartGen.ai可即時建立相同的視覺化效果 - 貼上資料,獲得專業樣式的堆疊長條圖,匯出PNG。無需編寫程式碼即可進行快速分析,完美選擇。

  • 無需安裝Python
  • 跳過除錯與語法錯誤
  • AI處理樣式與格式
  • 即時PNG匯出
  • 非常適合簡報與報告

常見問題

如何在Python中建立堆疊長條圖?
使用matplotlib的bottom參數:plt.bar(x, data1); plt.bar(x, data2, bottom=data1)。或者使用pandas:df.plot(kind='bar', stacked=True)。兩種方法都建立顯示各組成部分如何累加為總量的堆疊長條圖。
如何在Python中製作100%堆疊長條圖?
首先正規化資料:df_pct = df.div(df.sum(axis=1), axis=0) * 100。然後繪圖:df_pct.plot(kind='bar', stacked=True)。這會將每個長條顯示為100%,帶有比例分段。
matplotlib與pandas用於堆疊長條圖有什麼區別?
Pandas更簡單(一行程式碼:df.plot(kind='bar', stacked=True)),但靈活性較低。Matplotlib需要手動計算bottom參數,但提供更多自訂選項。快速繪圖用pandas,出版級圖表用matplotlib。
如何在Python中為堆疊長條圖分段添加標籤?
使用matplotlib 3.4+,用ax.bar_label(container, label_type='center')。遍歷ax.containers為每個堆疊分段添加標籤。對於舊版本,用plt.text()手動計算位置。
如何在Python中製作水平堆疊長條圖?
使用pandas:df.plot(kind='barh', stacked=True)。使用matplotlib:使用plt.barh()和'left'參數代替'bottom'。
有沒有不用Python就能建立堆疊長條圖的方法?
有的,ChartGen.ai無需任何編碼即可即時建立堆疊長條圖。貼上資料,AI生成專業樣式的圖表,即可匯出為PNG。

相關指南

立即開始建立專業長條圖

加入數千名使用 ChartGen.ai 建立出色資料視覺化的用戶。免費使用,無需註冊。