如何在柱状图中添加数据标签?

  1. 简单柱状图添加数据标签

    • 首先,按照常规方式绘制柱状图。假设我们有水果种类和对应的销量数据,如下所示:
    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()
    
  2. 水平柱状图添加数据标签

    • 绘制水平柱状图的方式稍有不同,使用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()
    
  3. 多组数据柱状图添加数据标签

    • 假设除了水果销量,还有利润数据,如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()
    
  4. 堆叠柱状图添加数据标签

    • 绘制堆叠柱状图,例如还是上述销量和利润数据。
    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()
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值