Matplotlib中的水平堆叠条形图

Matplotlib中的水平堆叠条形图

水平堆叠条形图是一种常用于可视化数据的图表类型,可以用于表示各类项目的组成部分之间的比例关系。在Python中,Matplotlib是一款常用的绘图库,可以方便地使用水平堆叠条形图来可视化数据。

堆叠条形图的基础知识

堆叠条形图是由多个水平条形图组成的,每个条形图表示数据中的一组条目。各组条目的值堆叠在一起,形成整个图表的柱形堆叠效果。数据可以用列表或NumPy数组的形式输入,并使用Matplotlib的绘图函数进行绘制。本篇文章将介绍Matplotlib中使用水平堆叠条形图的方法,下面是一个简单的例子:

import matplotlib.pyplot as plt
import numpy as np

labels = ['A', 'B', 'C', 'D', 'E']
men_means = [20, 35, 30, 35, 27]
women_means = [25, 32, 34, 20, 25]

fig, ax = plt.subplots()
ax.barh(labels, men_means)
ax.barh(labels, women_means, left=men_means)

plt.show()

代码说明:
labels变量包含了水平堆叠条形图中每个条目的标签;
men_meanswomen_means变量是两个列表,记录了各个条目在男性和女性中的数量;
fig, ax = plt.subplots()创建了一个matplotlib.figure对象和一个matplotlib.axes对象,用于容纳和绘制堆叠条形图;
ax.barh(labels, men_means)绘制男性数据的水平条形图;
ax.barh(labels, women_means, left=men_means)在原有图表的基础上,绘制女性数据的水平条形图,并设置左侧边缘位置以便实现堆叠效果;
plt.show()将图表显示出来。

上图是一个简单的堆叠水平条形图,用于表示数据中五个条目在男性和女性中的数量。男性和女性各自对应一个水平条形图,两个图形在垂直方向上叠放在一起,以便在同一图表中比较不同组别的数据。

使用Matplotlib绘制水平堆叠条形图

在Matplotlib中,可以使用barh函数绘制水平堆叠条形图。barh函数提供了许多可用于自定义图表外观的选项,例如边框颜色、填充颜色、标签和图例等。下面介绍使用barh函数创建水平堆叠条形图的常见选项。

设置填充颜色

水平堆叠条形图的一大特点是可以将不同组别的数据堆叠在一起,形成图形堆叠效果。Matplotlib中的barh函数可以通过color参数来设置每个条形图的填充颜色,使用方法如下:

ax.barh(labels, men_means, color='b', label='Men')
ax.barh(labels, women_means, left=men_means, color='r', label='Women')

代码中men_means所代表的男性数据默认的填充颜色是b,代表蓝色,将label参数设为'Men',会在图表中标注出男性数据的条形图。同样的,women_means所代表的女性数据的默认填充颜色是r,代表红色,将label参数设为'Women',会在图表中标注出女性数据的条形图。

设置边框颜色和线条宽度

在其他绘图库中,通常可以通过参数设置条形图的边框颜色和线条宽度。在Matplotlib中,需要使用edgecolorlinewidth参数来实现类似的效果。下面是一个例子:

ax.barh(labels, men_means, color='b', edgecolor='k', linewidth=1, label='Men')
ax.barh(labels, women_means, left=men_means, color='r', edgecolor='k', linewidth=1, label='Women')

这里的edgecolor参数用于设置边框颜色为黑色,linewidth参数用于设置线条宽度为1。

添加标签和图例

默认情况下,Matplotlib水平堆叠条形图的每个条形图都会显示出来,但是不会附带标签和图例等信息。为了更好地理解图表中表达的数据,通常需要在图表中添加标签和图例等信息。Matplotlib中可以使用set_xticklabelslegend函数来实现对图表添加标签和图例的操作,下面的代码演示了在水平堆叠条形图中添加标签和图例的操作:

ax.set_xlabel('Number of people')
ax.set_title('Number of men and women per class')
ax.set_yticks(np.arange(len(labels)))
ax.set_yticklabels(labels)
ax.legend()
  • set_xlabel用于设置x轴标签;
  • set_title用于设置图表标题;
  • set_yticksset_yticklabels用于设置y轴的整数刻度和对应的文本标签;
  • legend用于在图表中添加图例信息。

完整代码和效果图

下面是上述所有内容的完整代码和效果图,供读者参考。

import matplotlib.pyplot as plt
import numpy as np

labels = ['A', 'B', 'C', 'D', 'E']
men_means = [20, 35, 30, 35, 27]
women_means = [25, 32, 34, 20, 25]

fig, ax = plt.subplots()
ax.barh(labels, men_means, color='b', edgecolor='k', linewidth=1, label='Men')
ax.barh(labels, women_means, left=men_means, color='r', edgecolor='k', linewidth=1, label='Women')

ax.set_xlabel('Number of people')
ax.set_title('Number of men and women per class')
ax.set_yticks(np.arange(len(labels)))
ax.set_yticklabels(labels)
ax.legend()

plt.show()

结论

水平堆叠条形图是一种常用的数据可视化方式,可以用于比较不同组别之间的数据分布情况。Matplotlib作为Python的一个强大的数据可视化工具,提供了方便可靠的绘图函数,可以让我们轻松地使用水平堆叠条形图将数据可视化。通过对本文所介绍的知识点进行学习和实践,读者可以更加深入地了解水平堆叠条形图的用法,提高数据可视化的效率和质量。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程