matplotlib可视化篇之并列柱状图--直方图(3)

并列柱状图,即将不同数据集进行并列显示,直观反映数据集之间的差异。
本节将实现柱状图的并列显示以及对柱状图进行填充。
相关函数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()

最简实现效果:

matplotlib可视化篇之并列柱状图--直方图(3)_第1张图片
并列柱状图实现效果
那么对于水平方向该如何实现呢?答案很简单,将bar()换为barh(),将plt.xticks改为plt.yticks,这里想说明的是,的确可以这样实现,但要理解在barh()中,其实对应参数的含义,比如,x,y其实对应y,width,即柱状图所处的高度及其宽度,可以查看 官方barh()项目地址,或者 可视化篇barh()--直方图(2)。
那么,对于在柱状图内部实现画线填充,又该如何实现呢?答案是在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实现效果如下:

matplotlib可视化篇之并列柱状图--直方图(3)_第2张图片
添加hatch参数实现效果
值得注意的有两点:1.每一种 hatch字符代表填充的形状,其中'*'代表五角星,'.'代表以点填充,'o'代表圆形填充;2. 重复使用字符,实现的是类似加密,使得填充字符间距更小,当bar_width比较小时看起来效果好,注意并不是越密越好,过密会失去字符特征,还请在尝试中选择效果最好的为准。

你可能感兴趣的:(matplotlib可视化篇之并列柱状图--直方图(3))