Matplotlib绘制堆叠面积图

Matplotlib绘制堆叠面积图

Matplotlib绘制堆叠面积图

介绍

堆叠面积图是一种常用的数据可视化方式,通过堆叠不同数据系列的面积,可以直观地展示数据的变化趋势和比例关系。在Python中,matplotlib是一个功能强大的绘图库,可以用来绘制各种类型的图表,包括堆叠面积图。

准备数据

在绘制堆叠面积图之前,首先需要准备数据。我们以一个简单的示例来说明,假设有三个数据系列A、B、C,每个数据系列包含5个数据点。

import matplotlib.pyplot as plt

# 数据
data = {
    'A': [20, 35, 30, 35, 27],
    'B': [25, 32, 34, 20, 25],
    'C': [30, 30, 32, 22, 18]
}

# x轴数据
x = range(1, 6)

绘制堆叠面积图

接下来,我们使用matplotlib来绘制堆叠面积图。首先,我们需要绘制第一个数据系列A,然后在其基础上绘制第二个数据系列B,最后再在前两个数据系列的基础上绘制第三个数据系列C。

import matplotlib.pyplot as plt

# 数据
data = {
    'A': [20, 35, 30, 35, 27],
    'B': [25, 32, 34, 20, 25],
    'C': [30, 30, 32, 22, 18]
}

# x轴数据
x = range(1, 6)

# 绘制堆叠面积图
plt.stackplot(x, data['A'], data['B'], data['C'], labels=['A', 'B', 'C'])
plt.legend(loc='upper left')
plt.show()

代码运行结果:

Matplotlib绘制堆叠面积图

运行以上代码,我们可以得到一个简单的堆叠面积图,其中三个数据系列A、B、C被堆叠在一起,展示了它们的变化趋势。

自定义堆叠面积图

除了简单的堆叠面积图外,我们还可以对图表进行一些自定义,比如修改颜色、添加标签等。

import matplotlib.pyplot as plt

# 数据
data = {
    'A': [20, 35, 30, 35, 27],
    'B': [25, 32, 34, 20, 25],
    'C': [30, 30, 32, 22, 18]
}

# x轴数据
x = range(1, 6)

# 自定义堆叠面积图
plt.stackplot(x, data['A'], data['B'], data['C'], labels=['A', 'B', 'C'], colors=['r', 'g', 'b'])
plt.legend(loc='upper left')
plt.title('Stacked Area Chart')
plt.xlabel('X-axis')
plt.ylabel('Y-axis')
plt.grid(True)
plt.show()

代码运行结果:

Matplotlib绘制堆叠面积图

通过上面的代码,我们可以得到一个自定义的堆叠面积图,其中数据系列A、B、C分别用红色、绿色、蓝色表示,同时添加了标题、坐标轴标签和网格线。

堆叠面积图的堆叠顺序

在堆叠面积图中,数据系列的堆叠顺序会影响最终的图表效果。默认情况下,数据系列是按照在stackplot()函数中传入的顺序进行堆叠的,我们可以通过调整数据的顺序来改变堆叠顺序。

import matplotlib.pyplot as plt

# 数据
data = {
    'A': [20, 35, 30, 35, 27],
    'B': [25, 32, 34, 20, 25],
    'C': [30, 30, 32, 22, 18]
}

# x轴数据
x = range(1, 6)

# 调整堆叠顺序
plt.stackplot(x, data['C'], data['B'], data['A'], labels=['C', 'B', 'A'])
plt.legend(loc='upper left')
plt.show()

代码运行结果:

Matplotlib绘制堆叠面积图

在上面的代码中,我们将数据系列C放在最底部,数据系列B放在中间,数据系列A放在顶部,这样就改变了堆叠顺序,得到了不同的堆叠面积图。

堆叠面积图的透明度

堆叠面积图中,每个数据系列的颜色会叠加在一起,为了让图表更加清晰,我们可以设置每个数据系列的透明度。

import matplotlib.pyplot as plt

# 数据
data = {
    'A': [20, 35, 30, 35, 27],
    'B': [25, 32, 34, 20, 25],
    'C': [30, 30, 32, 22, 18]
}

# x轴数据
x = range(1, 6)

# 设置透明度
plt.stackplot(x, data['A'], data['B'], data['C'], labels=['A', 'B', 'C'], alpha=0.5)
plt.legend(loc='upper left')
plt.show()

代码运行结果:

Matplotlib绘制堆叠面积图

在上面的代码中,我们通过设置alpha参数为0.5,使得每个数据系列的颜色透明度为50%,这样可以更清晰地看到数据的叠加效果。

堆叠面积图的填充样式

除了设置透明度外,我们还可以为堆叠面积图设置不同的填充样式,比如斜线、点线等。

import matplotlib.pyplot as plt

# 数据
data = {
    'A': [20, 35, 30, 35, 27],
    'B': [25, 32, 34, 20, 25],
    'C': [30, 30, 32, 22, 18]
}

# x轴数据
x = range(1, 6)

# 设置填充样式
plt.stackplot(x, data['A'], data['B'], data['C'], labels=['A', 'B', 'C'], hatch='//')
plt.legend(loc='upper left')
plt.show()

代码运行结果:

Matplotlib绘制堆叠面积图

在上面的代码中,我们通过设置hatch参数为’//’,为堆叠面积图添加了斜线填充样式,使得图表更加丰富多彩。

堆叠面积图的边界线

有时候,我们希望在堆叠面积图中添加边界线,以突出数据系列之间的分隔。

import matplotlib.pyplot as plt

# 数据
data = {
    'A': [20, 35, 30, 35, 27],
    'B': [25, 32, 34, 20, 25],
    'C': [30, 30, 32, 22, 18]
}

# x轴数据
x = range(1, 6)

# 添加边界线
plt.stackplot(x, data['A'], data['B'], data['C'], labels=['A', 'B', 'C'], edgecolor='black')
plt.legend(loc='upper left')
plt.show()

代码运行结果:

Matplotlib绘制堆叠面积图

在上面的代码中,我们通过设置edgecolor参数为’black’,为堆叠面积图添加了黑色的边界线,使得数据系列之间更加清晰。

堆叠面积图的阴影效果

为了突出数据系列的变化趋势,我们可以为堆叠面积图添加阴影效果。

import matplotlib.pyplot as plt

# 数据
data = {
    'A': [20, 35, 30, 35, 27],
    'B': [25, 32, 34, 20, 25],
    'C': [30, 30, 32, 22, 18]
}

# x轴数据
x = range(1, 6)

# 添加阴影效果
plt.stackplot(x, data['A'], data['B'], data['C'], labels=['A', 'B', 'C'], shadow=True)
plt.legend(loc='upper left')
plt.show()

在上面的代码中,我们通过设置shadow参数为True,为堆叠面积图添加了阴影效果,使得图表更加立体和生动。

堆叠面积图的堆叠方式

在默认情况下,堆叠面积图是垂直堆叠的,即数据系列在y轴方向上堆叠。我们也可以将数据系列水平堆叠,即在x轴方向上堆叠。

import matplotlib.pyplot as plt

# 数据
data = {
    'A': [20, 35, 30, 35, 27],
    'B': [25, 32, 34, 20, 25],
    'C': [30, 30, 32, 22, 18]
}

# x轴数据
x = range(1, 6)

# 水平堆叠
plt.stackplot(x, data['A'], data['B'], data['C'], labels=['A', 'B', 'C'], orientation='horizontal')
plt.legend(loc='upper left')
plt.show()

在上面的代码中,我们通过设置orientation参数为’horizontal’,将数据系列水平堆叠,得到了水平堆叠的堆叠面积图。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程