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_means
和women_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中,需要使用edgecolor
和linewidth
参数来实现类似的效果。下面是一个例子:
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_xticklabels
和legend
函数来实现对图表添加标签和图例的操作,下面的代码演示了在水平堆叠条形图中添加标签和图例的操作:
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_yticks
和set_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的一个强大的数据可视化工具,提供了方便可靠的绘图函数,可以让我们轻松地使用水平堆叠条形图将数据可视化。通过对本文所介绍的知识点进行学习和实践,读者可以更加深入地了解水平堆叠条形图的用法,提高数据可视化的效率和质量。