matplotlib繪製柱狀圖
阿新 • • 發佈:2022-05-05
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()