Numpy matplotlib: 给柱状图不同的填充样式
在本文中,我们将介绍如何给使用matplotlib制作的柱状图中的不同柱子分别添加不同的填充样式。通常情况下,matplotlib给柱状图的默认填充样式是一致的,而某些情况下我们想要为不同的柱子设置不同的样式。
阅读更多:Numpy 教程
1. 生成随机数据
我们先使用numpy生成两个随机数组作为柱状图的数据:
import numpy as np
data1 = np.random.randint(1, 10, size=5)
data2 = np.random.randint(1, 10, size=5)
2. 绘制柱状图
接下来使用matplotlib绘制柱状图,将数据传递给bar函数,同时设置每个柱子的颜色为蓝色:
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
x = np.arange(5)
bar_width = 0.35
rects1 = ax.bar(x, data1, bar_width, color='b')
rects2 = ax.bar(x + bar_width, data2, bar_width, color='b')
plt.show()
运行代码后,可以看到得到了一张基本的柱状图,其中两组柱子的填充样式是一样的。
3. 设置不同的填充样式
要设置不同填充样式,我们需要对每个柱子进行单独设置。首先,我们需要定义一些填充样式,可以使用matplotlib中的“hatch”参数。例如,我们定义两个样式,分别对应线和点:
patterns = ['-', '.']
随后,对于每个柱子,我们分别设置填充样式,可以使用”set_hatch”方法:
for i in range(5):
rects1[i].set_hatch(patterns[i % 2])
rects2[i].set_hatch(patterns[(i+1) % 2])
其中,我们对于第一个柱状图的第i个柱子设置填充样式为“patterns[i%2]”,这样可以实现交替设置不同的填充样式。对于第二个柱状图的第i个柱子也是类似的方式。
最终代码如下所示:
import numpy as np
import matplotlib.pyplot as plt
data1 = np.random.randint(1, 10, size=5)
data2 = np.random.randint(1, 10, size=5)
patterns = ['-', '.']
fig, ax = plt.subplots()
x = np.arange(5)
bar_width = 0.35
rects1 = ax.bar(x, data1, bar_width, color='b')
rects2 = ax.bar(x + bar_width, data2, bar_width, color='b')
for i in range(5):
rects1[i].set_hatch(patterns[i % 2])
rects2[i].set_hatch(patterns[(i+1) % 2])
plt.show()
运行代码后,可以看到柱状图已经应用了不同的填充样式。
总结
本文介绍了如何给matplotlib制作的柱状图中的不同柱子分别添加不同的填充样式。具体的方法是,首先生成随机数据,然后绘制柱状图。最后定义填充样式并对每个柱子分别设置不同的填充样式。
极客笔记