如何繪製柱狀圖
matplotlib.pyplot模組可使用bar()方法進行繪製柱狀圖,使用方式和plot()方法差不多,其語法如下:
plt.bar(x座標串列, y座標串列,
[bottom=y座標繪製起始位置, color="顏色名稱", label="圖例名稱"])[簡例] 將plt03.py的iPhone歷年銷售量的圖表改使用柱狀圖呈現,同時在圖表中顯示網格。(檔名:plt05.py)
[結果]

程式碼:
plt05.pyimport matplotlib.pyplot as plt font = {'family' : 'DFKai-SB'} plt.rc('font', **font) listX = [2017, 2018, 2019, 2020, 2021, 2022] listY = [43000, 31000, 70500, 68000, 85000, 24000] plt.bar(listX, listY, color='blue', label="iPhone歷年銷售量") plt.title("手機歷年銷售量") plt.xlim(2016, 2023) plt.ylim(0, 110000) plt.xlabel('年度') plt.ylabel('銷售量') plt.legend() plt.grid(True) plt.show()
說明
- 第
8行:使用bar()方法繪製柱狀圖。- 第
16行:設定圖表顯示網格線。
如何繪製疊加柱狀圖
若以相同方法將plt04.py的線條圖改使用bar()方法顯示柱狀圖(範例可參考plot06.py),結果會發現由於各類手機歷年銷售量各有增減。所以柱狀圖的顏色會互相覆蓋,如此即無法明確瞭解被覆蓋手機的資訊。

因此可以透過繪製疊加柱狀圖來解決此問題,也就是目前繪製手機的y座標起始位置是由前一個手機的y座標最終值開始繪製,此時即可以在bar()方法使用bottom參數來設定柱狀圖y座標要繪製的起始位置。
[簡例] 以疊加柱狀圖的方式繪製2017~2022年手機的歷年銷售量圖表。 (檔名:plt07.py)
程式碼:
plt07.pyimport matplotlib.pyplot as plt font = {'family' : 'DFKai-SB'} plt.rc('font', **font) listIYearX = [2017, 2018, 2019, 2020, 2021, 2022] listIPhoneY = [43000, 31000, 70500, 68000, 85000, 24000] plt.bar(listIYearX, listIPhoneY, label="iPhone") listAsusY = [23000, 36000, 40500, 58000, 65000, 44000] plt.bar(listIYearX, listAsusY, bottom=listIPhoneY ,label="ASUS") listY = [0,0,0,0,0,0] for n in range(0, 6, 1): listY[n] = listIPhoneY[n] + listAsusY[n] listGoogleY = [13000, 26000, 50500, 68000, 75000, 54000] plt.bar(listIYearX, listGoogleY, bottom=listY, label="Google") plt.title("手機歷年銷售量") plt.xlim(2016, 2023) plt.ylim(0, 300000) plt.xlabel('年度') plt.ylabel('銷售量') plt.legend() plt.grid(True) plt.show()
[結果]

說明
- 第
8行:繪製iPhone歷年銷售量的柱狀圖。- 第
11行: 繪製ASUS歷年銷售量的柱狀圖。此柱狀圖的y座標繪製起點為iPhone銷售量。- 第
13~15行:將iPhone與ASUS歷年銷售量進行相加並指定給listY,用來當做是y座標繪製起點。- 第
17行: 繪製iPhone加上ASUS歷年銷售量。
相關主題與延伸閱讀
- 1. matplotlib 套件:複習
matplotlib套件的安裝與匯入方式。 - 2. 繪製線條圖:可比較
bar()與plot()方法在資料呈現上的差異。 - 4. 繪製圓餅圖:延伸學習以圓餅圖呈現資料比例的方式。
- 10. 遊戲銷售統計:柱狀圖統計銷售量的實際應用案例,結合 tkinter 視窗顯示。