matplotlib基础绘图命令之bar的使用方法

1. 简介

matplotlib是 Python 的一个 2D 绘图库,能够以各种硬拷贝格式和跨平台交互式环境生成出高质量的图形。在绘图时,bar图是一种比较常见的形式,通常用于绘制柱状图、直方图等。

2. 简单bar图绘制

绘制bar图的基本命令是plt.bar(),它可以接受一系列x,y坐标对用于绘制图形。代码如下:

import matplotlib.pyplot as plt

import numpy as np

# 设置随机数种子

np.random.seed(0)

# 生成数据

x = np.arange(5)

y = np.random.randint(-5, 5, 5)

# 绘制bar图

plt.bar(x, y)

plt.show()

上述代码生成了一张简单的bar图,如下所示:

可以看到图形的横轴x、纵轴y分别代表5个数据点的值。例如,x=0时,对应的y=-1。

3. 横向bar图绘制

如果想要横向绘制bar图,则可以将plt.bar()命令中的参数“orientation”设置为“horizontal”。下面的代码演示了如何绘制横向bar图:

import matplotlib.pyplot as plt

import numpy as np

# 设置随机数种子

np.random.seed(0)

# 生成数据

x = np.arange(5)

y = np.random.randint(-5, 5, 5)

# 绘制横向bar图

plt.barh(x, y, orientation='horizontal')

plt.show()

上述代码生成的横向bar图如下所示:

可以看到,图形的横轴x、纵轴y互换了,纵轴表示各数据点的值,横轴则代表不同的数据点。

4. 多个bar图绘制

有时需要绘制多个不同类别的bar图,可以通过调整每个bar的坐标来实现。下面是学生英语成绩的例子:

import matplotlib.pyplot as plt

import numpy as np

# 设置随机数种子

np.random.seed(0)

# 生成数据

english = np.random.randint(60, 100, 5)

chinese = np.random.randint(60, 100, 5)

math = np.random.randint(60, 100, 5)

# 生成bar的位置

index = np.arange(5)

# 每个bar的宽度(可以根据需求调整)

bar_width = 0.2

# 绘制多个bar图

plt.bar(index, english, bar_width, color='b', label='English')

plt.bar(index+bar_width, chinese, bar_width, color='g', label='Chinese')

plt.bar(index+2*bar_width, math, bar_width, color='r', label='Math')

# 添加图例

plt.legend()

# 显示图形

plt.show()

上述代码生成的多个bar图如下所示:

上图显示了不同学科的成绩,蓝色代表英语,绿色代表中文,红色代表数学。

5. 堆积bar图绘制

在多个bar图中,有时需要按照某种方式堆积在一起,即在同一个坐标上叠加不同的bar图。下面的代码演示了如何绘制堆积bar图:

import matplotlib.pyplot as plt

import numpy as np

# 设置随机数种子

np.random.seed(0)

# 生成数据

english = np.random.randint(60, 100, 5)

chinese = np.random.randint(60, 100, 5)

math = np.random.randint(60, 100, 5)

# 生成bar的位置

index = np.arange(5)

# 每个bar的宽度(可以根据需求调整)

bar_width = 0.5

# 绘制堆积bar图

plt.bar(index, english, bar_width, color='b', label='English')

plt.bar(index, chinese, bar_width, color='g', bottom=english, label='Chinese')

plt.bar(index, math, bar_width, color='r', bottom=english+chinese, label='Math')

# 添加图例

plt.legend()

# 显示图形

plt.show()

上述代码生成的堆积bar图如下所示:

可以看到,各个学科的成绩如同按照某种方式堆叠在一起,各自的颜色和label信息清晰可见。

6. 混合bar图绘制

有时需要绘制不同种类的bar图,例如标记了不同颜色的平均值线,或者带有误差棒的bar图等。下面的代码演示了如何绘制混合bar图:

import matplotlib.pyplot as plt

import numpy as np

# 设置随机数种子

np.random.seed(0)

# 生成数据

english = np.random.randint(60, 100, 5)

chinese = np.random.randint(60, 100, 5)

math = np.random.randint(60, 100, 5)

# 计算各科平均分和误差

average = [np.mean(english), np.mean(chinese), np.mean(math)]

std = [np.std(english), np.std(chinese), np.std(math)]

# 生成bar的位置

index = np.arange(3)

# 每个bar的宽度(可以根据需求调整)

bar_width = 0.5

# 绘制混合bar图

plt.bar(index, average, bar_width, color='b', label='Average')

plt.bar(index, [100, 100, 100], 0.02, color='k')

plt.errorbar(index, average, std, linestyle='None', marker='_', color='k')

plt.xticks(index, ('English', 'Chinese', 'Math'))

# 添加图例

plt.legend()

# 显示图形

plt.show()

上述代码生成的混合bar图如下所示:

可以看到,混合到一起的bar图非常丰富多彩,不同元素的长度、位置、颜色、风格都有所不同,其中黑色的平均值线和误差棒可以更直观地表示数据的分布情况。

7. 总结

本文简要介绍了matplotlib基础绘图命令之bar的基本使用方法,包括简单bar图、横向bar图、多个bar图、堆积bar图、混合bar图等。这些技巧可以方便地为我们的数据建模和分析提供便利。在使用过程中,我们还可以通过修改代码、参数、样式等来满足我们的需求。

后端开发标签