天天看點

matplotlib繪制柱狀圖

文章目錄

    • 柱狀圖
    • 最後放一張matplotlib顔色表:

柱狀圖

plt.bar(x, height, color,edgecolor,width=0.8,align='center',bottom=None)

必選參數:

  • x,表示橫坐标刻度值,可以是array、list等
  • height,表示每個柱子的高度,可以是array、list等

可選參數:

  • color:每個柱子的顔色,如果所有柱子的顔色都一樣,可以隻設定一種顔色,如

    color='blue'

    ;但如果每個柱子都想要不同的顔色,用清單表示每個柱子的顔色。例如:
    #假設有三個柱子
    x = [1,2,3]
    height = [4,5,6]
    
    plt.bar(x, height, color=['r','g','b']) #三個柱子顔色分别為紅、綠、藍
    plt.show()
               
    matplotlib繪制柱狀圖
  • edgecolor:柱子邊緣顔色,用法與color一樣。

    例如:

    plt.bar(x,height,color='white',edgecolor='black')
    plt.show()
               
    matplotlib繪制柱狀圖
  • width:表示每個柱子的寬度,預設是0.8
  • align:表示柱子中間的位置,預設為

    center

    ,表示柱子的中間位置與x軸的刻度對齊。還可以選用

    edge

    , 表示柱子的左邊緣與x軸的刻度對齊。如:
    x = [1,2,3]
    height = [4,5,6]
    
    plt.bar(x,height,color='b',width=0.3, align='edge') #左邊緣對齊刻度,柱子寬0.3
    plt.xticks(x) # 标x軸刻度
    plt.show()
               
    matplotlib繪制柱狀圖

通過調整

x

的值和

width

可以做出下面的圖:

x1 = np.array([1,2,3])
y1 = [4,2,6]
y2 = [3,8,4]

plt.bar(x1-0.15, y1,width=0.3,align='center',alpha=0.5)
plt.bar(x1+0.15,y2,width=0.3,color='g',align='center',alpha=0.5)

plt.xticks(x1,['s1','s2','s3'],fontsize=15)         #把x軸刻度用字元代替
plt.yticks([1,3,5,7],['a','b','c','d'],fontsize=10) 
plt.show()
           
matplotlib繪制柱狀圖
  • bottom:表示每個柱子底部的y軸坐标,可以是單個數,也可以是list, array等

    例如:

    x = [1,2,3]
    height = [4,5,6]
    
    plt.bar(x,height,color='b',bottom=2)
    plt.xticks(x)
    plt.show()
               
    注意底部 y 軸坐标,頂部y軸坐标為:

    top = bootom + height

    matplotlib繪制柱狀圖
    x = [1,2,3]
    height = [4,5,6]
    
    plt.bar(x,height,color='b',bottom=[0,1,2]) # bottom使用清單
    plt.xticks(x)
    plt.show()
               
    matplotlib繪制柱狀圖

使用 bottom參數可以繪制堆疊圖:

例如:

#假設有三個柱子
x = [1,2,3]
height_1 = [4,5,6]
height_2 = [7,4,2]

plt.bar(x,height_1,color='b')
plt.bar(x,height_2,color='r',bottom=[4,5,6])
plt.xticks(x)
plt.show()
           
matplotlib繪制柱狀圖

plt.text(x,y,s)

可以給每個柱子都标上說明

  • x, y 表示說明文字 s 的坐标位置

現在在每個柱子上标上它們的 y軸位置

#假設有三個柱子
x = [1,2,3]
height_1 = np.array([4,5,6])
height_2 = np.array([7,4,2])

plt.bar(x,height_1,color='b')
plt.bar(x,height_2,color='r',bottom=height_1)
plt.xticks(x)

for x1,y1 in zip(x,height_1):
    plt.text(x1,y1,y1,fontsize=15) 			#說明文字是y1

for x2,y2 in zip(x,height_1+height_2):
    plt.text(x2,y2,y2,fontsize=12)          #說明文字是y2
plt.show()
           
matplotlib繪制柱狀圖

圖畫的有點難看!!!

最後放一張matplotlib顔色表:

matplotlib繪制柱狀圖