1. 程式人生 > 其它 >matplotlib繪製柱狀圖

matplotlib繪製柱狀圖

1.柱狀圖的繪製

柱狀圖是一種用矩形柱來表示資料分類的圖表。
柱狀圖可以垂直繪製,也可以水平繪製。
它的高度與其所表示的數值成正比關係。
柱狀圖顯示了不同類別之間的比較關係,圖表的水平軸 X 指定被比較的類別,垂直軸 Y 則表示具體的類別值

matplotlib.pyplot.bar(x, height, width: float = 0.8, bottom = None, *, align: str = ‘center’, data = None, **kwargs)

x 表示x座標,資料型別為float型別,一般為np.arange()生成的固定步長列表
height 表示柱狀圖的高度,也就是y座標值,資料型別為float型別,一般為一個列表,包含生成柱狀圖的所有y值
width 表示柱狀圖的寬度,取值在0
~1之間,預設值為0.8 bottom 柱狀圖的起始位置,也就是y軸的起始座標,預設值為None align 柱狀圖的中心位置,“center”,"lege"邊緣,預設值為’center’ color 柱狀圖顏色,預設為藍色 alpha 透明度,取值在0~
1之間,預設值為1 label 標籤,設定後需要呼叫plt.legend()生成 edgecolor 邊框顏色 (ec) linewidth 邊框寬度,浮點數或類陣列,預設為None (lw) tick_label:柱子的刻度標籤,字串或字串列表,預設值為None。 linestyle :線條樣式 (ls)

 

 1.1 bottom引數 柱狀圖的起始位置,也就是y軸的起始座標,預設值為None

 

 1.2 color引數 設定柱狀圖的柱狀顏色

描邊 -相關的關鍵字引數為:
edgecolor 或 ec
linestyle 或 ls
linewidth 或 lw

 

 2.同位置多柱狀圖

同一 x 軸位置繪製多個柱狀圖,主要通過調整柱狀圖的寬度和每個柱狀圖x軸的 起始位置

 

 

 

 

# 國家
countries = ['挪威', '德國', '中國', '美國', '瑞典']

# 金牌個數
gold_medal = [16, 12, 9, 8, 8]
# 銀牌個數
silver_medal = [8, 10, 4, 10, 5]
# 銅牌個數
bronze_medal = [13, 5, 2, 7, 5]

#1.將x軸轉換成數值
x = np.arange(len(countries))

# 2.設定圖形的寬度
width = 0.2

# ===============確定x起始位置==========
# 金牌起始位置
gold_x = x

# 銀牌的起始位置
silver_x = x + width

# 銅牌的起始位置
bronze_x = x + 2 * width

    
# ==================分別繪製圖形
# 金牌圖形
plt.bar(gold_x,gold_medal,width=width,color="gold",label='金牌')

# 銀牌圖形
plt.bar(silver_x,silver_medal,width=width,color="silver",label='銀牌')

# 銅牌圖形
plt.bar(bronze_x,bronze_medal,width=width, color="saddlebrown",label='銅牌')

# ================將x軸的座標變回來

# 注意x標籤的位置未居中
plt.xticks(x+width, labels=countries)

# verticalalignment:(va)垂直對齊方式 ,引數:[ ‘center’ | ‘top’ | ‘bottom’ | ‘baseline’ ]
# horizontalalignment:(ha)水平對齊方式 ,引數:[ ‘center’ | ‘right’ | ‘left’ ]
#-----------顯示高度文字----------------
for i in range(len(countries)):
    # 金牌的文字設定
    plt.text(gold_x[i],gold_medal[i],gold_medal[i],va="bottom",ha="center")
    # 銀牌牌
    plt.text(silver_x[i],silver_medal[i],silver_medal[i],va="bottom",ha="center")
    # 銅牌
    plt.text(bronze_x[i],bronze_medal[i],bronze_medal[i],va="bottom",ha="center")

# 顯示圖例
plt.legend()
plt.show()