欢迎访问宙启技术站
智能推送

利用Python实现柱状图的堆叠和分组

发布时间:2023-12-12 04:51:17

柱状图是一种常用的数据可视化图表,用于比较不同类别之间的数据。在Python中,我们可以使用Matplotlib库来绘制柱状图,并通过设置堆叠和分组参数来显示不同类别之间的关系。

首先,我们需要安装Matplotlib库:

pip install matplotlib

接下来,我们可以从Matplotlib库中导入pyplot模块,并使用它来创建柱状图。

### 堆叠柱状图

堆叠柱状图用于将多个类别的数据堆叠在一起,以显示总体数值的对比关系。

下面是一个简单的例子,展示了2019年每个季度销售额的堆叠柱状图:

import matplotlib.pyplot as plt

quarters = ['Q1', 'Q2', 'Q3', 'Q4']
sales_A = [100, 150, 200, 250]
sales_B = [120, 130, 180, 200]
sales_C = [80, 120, 150, 170]

plt.bar(quarters, sales_A, label='A')
plt.bar(quarters, sales_B, bottom=sales_A, label='B')
plt.bar(quarters, sales_C, bottom=[sales_A[i] + sales_B[i] for i in range(len(quarters))], label='C')

plt.xlabel('Quarter')
plt.ylabel('Sales')
plt.title('Sales by Quarter')
plt.legend()

plt.show()

运行代码,会得到一个堆叠柱状图,其中每个柱状条代表一个季度,每个类别的销售额以不同颜色堆叠显示。通过bottom参数指定每个类别的起始高度,即上一个类别销售额的终点位置。

### 分组柱状图

分组柱状图用于将不同类别的数据按照不同颜色和位置进行分组,以显示类别之间的对比关系。

下面是一个简单的例子,展示了2019年每个季度销售额的分组柱状图:

import numpy as np
import matplotlib.pyplot as plt

quarters = ['Q1', 'Q2', 'Q3', 'Q4']
bar_width = 0.25

sales_A = [100, 150, 200, 250]
sales_B = [120, 130, 180, 200]
sales_C = [80, 120, 150, 170]

r1 = np.arange(len(quarters))
r2 = [x + bar_width for x in r1]
r3 = [x + 2*bar_width for x in r1]

plt.bar(r1, sales_A, color='b', width=bar_width, label='A')
plt.bar(r2, sales_B, color='g', width=bar_width, label='B')
plt.bar(r3, sales_C, color='r', width=bar_width, label='C')

plt.xlabel('Quarter')
plt.ylabel('Sales')
plt.title('Sales by Quarter')
plt.xticks([r + bar_width for r in range(len(quarters))], quarters)
plt.legend()

plt.show()

运行代码,会得到一个分组柱状图,其中每个柱状条代表一个季度,每个类别的销售额以不同颜色和位置进行分组显示。通过设置每个类别的x轴位置和颜色,实现了分组效果。

通过调整上述代码中的数据和参数,你可以创建自己的堆叠和分组柱状图,用于展示不同类别之间的数据关系。