( 图表 ) 堆叠长条图
这篇教学会延伸 matplotlib pyplot 模组里的 bar() 方法,将数据绘制成堆叠长条图,并进一步替堆叠长条图加上文字标签。
本篇使用的 Python 版本为 3.7.12,所有范例可使用 Google Colab 实作,不用安装任何软件 ( 参考:使用 Google Colab )
import matplotlib
要进行本篇的范例,必须先加载 matplotlib 函数库的 pyplot 模组,范例将其独立命名为 plt。
import matplotlib.pyplot as plt
绘制第一张堆叠长条图
下方的程序码延伸了长条图的做法,搭配 bottom 参数,将第二组数据的起始点,设定为第一组数据的高度,执行后会根据数据数据,画出堆叠长条图。
import matplotlib.pyplot as plt
x = range(0,5)
y1 = [2,8,3,12,6]
y2 = [12,3,7,11,4]
plt.bar(x, y1)
plt.bar(x, y2, bottom=y1)
plt.show()
加上文字标签
额外设定 bar() 方法的 yerr 参数,就能替堆叠长条图加上误差范围线,搭配 text() 方法,就能替堆叠长条图加上文字标签 ( 如果是 matplotlib 3.5.1 以上的版本,也可使用 ax.bar_label() 方法,参考 Bar Label Demo )。
参考:数据文字标注
import matplotlib.pyplot as plt
x = range(5)
y1 = [7,8,5,12,6]
y2 = [12,8,7,11,4]
err1=[0.5,0.6,0.3,2,0.5]
err2=[1,0.8,0.5,1.1,0.5]
total = [y1[i]+y2[i] for i in range(0,5)]
plt.figure(figsize=(10,6))
plt.bar(x, y1, label='y1', yerr=err1) # 加入 yerr 參數
plt.bar(x, y2, bottom=y1, label='y2', yerr=err2)
plt.ylim(0,30)
plt.legend()
for i in x:
plt.text(i,
y1[i]/2 - 0.5, # 計算垂直高度
y1[i],
fontsize=14,
horizontalalignment='center') # 設定 horizontalalignment 屬性水平置中
plt.text(i,
y2[i]/2 + y1[i] - 0.5,
y2[i],
fontsize=14,
horizontalalignment='center')
plt.text(i,
total[i] + 1.5,
total[i],
fontsize=14,
horizontalalignment='center')
plt.show()
微信扫码关注
抖音扫码关注