-
简单柱状图添加数据标签
- 首先,按照常规方式绘制柱状图。假设我们有水果种类和对应的销量数据,如下所示:
import matplotlib.pyplot as plt fruits = ['apple', 'banana', 'cherry'] sales = [10, 15, 7] plt.bar(fruits, sales)
- 然后,使用
for
循环遍历每个柱子,通过plt.text()
函数来添加数据标签。plt.text()
函数的参数包括横坐标、纵坐标、要添加的文本内容,以及文本的水平和垂直对齐方式。
for i in range(len(fruits)): plt.text(fruits[i], sales[i], str(sales[i]), ha='center', va='bottom')
- 这里的
ha='center'
表示水平对齐方式为居中,va='bottom'
表示垂直对齐方式为底部,这样数据标签就会显示在柱子的中间靠下位置。最后,添加标题、坐标轴标签并显示图表。
plt.xlabel("Fruits") plt.ylabel("Sales") plt.title("Fruit Sales with Labels") plt.show()
-
水平柱状图添加数据标签
- 绘制水平柱状图的方式稍有不同,使用
plt.barh()
函数。例如,同样是上述水果和销量数据,绘制水平柱状图如下:
plt.barh(fruits, sales)
- 添加数据标签时,也需要相应地调整
plt.text()
函数的参数。此时横坐标变为数据值,纵坐标为水果种类,水平对齐方式一般设为left
,垂直对齐方式设为center
。
for i in range(len(fruits)): plt.text(sales[i], fruits[i], str(sales[i]), ha='left', va='center')
- 同样添加标题、坐标轴标签并显示图表。
plt.xlabel("Sales") plt.ylabel("Fruits") plt.title("Horizontal Fruit Sales with Labels") plt.show()
- 绘制水平柱状图的方式稍有不同,使用
-
多组数据柱状图添加数据标签
- 假设除了水果销量,还有利润数据,如
profits = [8, 12, 5]
,绘制并列柱状图并添加数据标签。
bar_width = 0.3 x1 = [i for i in range(len(fruits))] x2 = [i + bar_width for i in x1] plt.bar(x1, sales, width = bar_width, label='Sales') plt.bar(x2, profits, width = bar_width, label='Profits') plt.xticks([i + bar_width/2 for i in x1], fruits) plt.legend()
- 添加销量数据标签:
for i in range(len(fruits)): plt.text(x1[i], sales[i], str(sales[i]), ha='center', va='bottom')
- 添加利润数据标签:
for i in range(len(fruits)): plt.text(x2[i], profits[i], str(profits[i]), ha='center', va='bottom')
- 最后添加标题并显示图表。
plt.xlabel("Fruits") plt.ylabel("Amount") plt.title("Fruit Sales and Profits with Labels") plt.show()
- 假设除了水果销量,还有利润数据,如
-
堆叠柱状图添加数据标签
- 绘制堆叠柱状图,例如还是上述销量和利润数据。
plt.bar(fruits, sales, label='Sales') plt.bar(fruits, profits, bottom = sales, label='Profits') plt.xlabel("Fruits") plt.ylabel("Amount") plt.title("Stacked Fruit Sales and Profits") plt.legend()
- 添加数据标签时,需要先计算出堆叠后的总高度,然后添加相应的数据标签。
for i in range(len(fruits)): total = sales[i] + profits[i] plt.text(fruits[i], total, str(total), ha='center', va='bottom')
- 最后显示图表。
plt.show()