并列柱状图,即将不同数据集进行并列显示,直观反映数据集之间的差异。
本节将实现柱状图的并列显示以及对柱状图进行填充。
相关函数matplot.pyplot.bar()或者barh(),bar()函数的官方项目地址,matplotlib可视化篇bar()--直方图(1)。
最简实现
# 并列柱状图
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei']#设置字体以便支持中文
import numpy as np
x=np.arange(5)#柱状图在横坐标上的位置
#列出你要显示的数据,数据的列表长度与x长度相同
y1=[1,3,5,4,2]
y2=[2,5,3,1,6]
bar_width=0.3#设置柱状图的宽度
tick_label=['上海','武汉','南京','天津','南宁']
#绘制并列柱状图
plt.bar(x,y1,bar_width,color='salmon',label='类别A')
plt.bar(x+bar_width,y2,bar_width,color='orchid',label='类别B')
plt.legend()#显示图例,即label
plt.xticks(x+bar_width/2,tick_label)#显示x坐标轴的标签,即tick_label,调整位置,使其落在两个直方图中间位置
plt.show()
最简实现效果:
那么,对于在柱状图内部实现画线填充,又该如何实现呢?答案是在plt.bar()中添加参数hatch,hatch可选项有{'/', '', '|', '-', '+', 'x', 'o', 'O', '.', '*'},这里将选取两种实现,并对比同一种填充形状下不同密度的表现实现以及效果。
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei']#设置字体以便支持中文
x=np.arange(5)#柱状图在横坐标上的位置
#列出你要显示的数据,数据的列表长度与x长度相同
y1=[1,3,5,4,2]
y2=[2,5,3,1,6]
plt.subplot(121)
bar_width=0.3
#{'/', '\', '|', '-', '+', 'x', 'o', 'O', '.', '*'}
plt.bar(x,y1,bar_width,color='seagreen',hatch='xxx',label='xxx效果')
plt.bar(x+bar_width,y2,bar_width,color='lightsalmon',hatch='O',label='O实现效果')
plt.legend()#显示图例,即label
plt.xticks(x+bar_width/2,tick_label)#显示x坐标轴的标签,即tick_label,调整位置,使其落在两个直方图中间位置
plt.subplot(122)
plt.bar(x,y1,bar_width,color='burlywood',hatch='xxx',label='xxx加密效果')
plt.bar(x+bar_width,y2,bar_width,color='tomato',hatch='x',label='x实现效果')
plt.legend()
plt.xticks(x+bar_width/2,tick_label)
plt.show()
使用不同的hatch实现效果如下: