进阶1 多类型柱状图plt.bar()

多类型柱形图(Multi-category Bar Plot)是一种用于同时比较多个类别的柱形图。它可以将多个类别的数据以不同颜色的柱形进行展示,使我们可以直观地比较它们之间的差异和关系,如图所示:
在这里插入图片描述

那么应该如何绘制多类型柱形图呢,答案也是利用plt.bar();

回忆一下plt.bar的绘图方法:

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

在使用plt.bar()函数绘制柱形图时,以下两个参数是必须的:

  1. x:柱形的 x 坐标位置。它可以是一个数组或序列,用于确定每个柱形在 x 轴上的位置。每个柱形在 x 轴上的位置是根据提供的x参数确定的。
  2. height:柱形的高度,即对应数据的值。它可以是一个数组或序列,用于指定每个柱形的高度。每个柱形的高度由提供的height参数确定。
    当x是数组的时候,数组的长度应与要绘制的柱形数量相同,每个元素表示对应柱形的 x 坐标值。这样,可以通过控制数组中每个元素的值来调整每个柱形的位置。例如,如果x = [1, 2, 3],则第一个柱形位于 x=1 处,第二个柱形位于 x=2 处,依此类推。

x参数为一个序列时,序列的长度应与要绘制的柱形数量相同,序列中的每个元素将被视为柱形的 x 坐标值。这样,可以通过直接指定序列中的元素来确定每个柱形的位置。例如,如果x = ['A', 'B', 'C'],则第一个柱形标签为 ‘A’,第二个柱形标签为 ‘B’,依此类推。

import matplotlib.pyplot as plt
import numpy as np
# 使用中文
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
# 创建示例数据
categories = ['Category A', 'Category B', 'Category C']
data1 = [10, 15, 12]
data2 = [8, 10, 14]

# 计算柱形位置
bar_width = 0.35
x1 = [0, 1, 2]
x2 = [x + bar_width for x in x]
# 故柱宽为0.35, 两个类别的间隔为1-0.35*2 = 0.3

# 绘制柱形图
plt.bar(x1, data1, width=bar_width, label='Data 1')
plt.bar(x2, data2, width=bar_width, label='Data 2')

# 绘制网格线
plt.grid(axis='y')

# 绘制图例
plt.xlabel('类别')
plt.ylabel('数量')
plt.title('多类型柱状图')
plt.xticks(x1, categories)
plt.legend()

# 显示图形
plt.show()

在这里插入图片描述

示例代码中x1从0开始,柱形宽度为0.35,x2从0+bar_width开始,柱形宽度为0.35
通过调整坐标的值,可以达到不同的显示效果;

当种类更多时,通过调整bar_width的值,如当显示四柱时, 若将bar_width设置为0.2, x1 = [0, 1, 2] , x2 = [x + bar_width for x in x] ,x3 = [x + 2*bar_width for x in x] ,x4 = [x + 3*bar_width for x in x],则不同种类间隔为 1-0.2*4 = 0.2 ,代表每个柱子的宽度为0.2,不同种类的柱子间隔为0.2,这样设置的目的,是为了让显示更均衡,你可以自由的调整bar_width的值,来达到不同的显示效果;

  • 26
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值