文章目錄
-
- 柱狀圖
- 最後放一張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()
-
edgecolor:柱子邊緣顔色,用法與color一樣。
例如:
plt.bar(x,height,color='white',edgecolor='black') plt.show()
- width:表示每個柱子的寬度,預設是0.8
- align:表示柱子中間的位置,預設為
,表示柱子的中間位置與x軸的刻度對齊。還可以選用center
, 表示柱子的左邊緣與x軸的刻度對齊。如:edge
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()
通過調整
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()
-
bottom:表示每個柱子底部的y軸坐标,可以是單個數,也可以是list, array等
例如:
注意底部 y 軸坐标,頂部y軸坐标為:x = [1,2,3] height = [4,5,6] plt.bar(x,height,color='b',bottom=2) plt.xticks(x) plt.show()
top = bootom + height
x = [1,2,3] height = [4,5,6] plt.bar(x,height,color='b',bottom=[0,1,2]) # bottom使用清單 plt.xticks(x) plt.show()
使用 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()
用
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()
圖畫的有點難看!!!