首页 > 编程笔记 > Python笔记

Python barh()函数:绘制条形图

条形图主要用于展现 y 轴上不同类别数据的分布特征,其可分为单条形图和多条形图。在 Python 中,可以通过 matplotlib.pyplot 模块中的 barh() 函数绘制条形图。

barh() 函数的语法格式如下:
barh(y,width,height,color,edgecolor,label)

例如,绘制一个单条形图,示例代码如下:
import matplotlib.pyplot as plt
#显示中文
plt.rcParams['font.sans-serif']='SimHei'
#显示负号
plt.rcParams['axes.unicode_minus']=False
#x轴的刻度线向内显示
plt.rcParams['xtick.direction']='in'
#y轴的刻度线向外显示
plt.rcParams['ytick.direction']='out'
#创建画布
plt.figure(figsize=(10,8))
#条形图标题
plt.title('销售量分析表')
#数据
x=[25140,68541,36584,35864,57841,78520,46333,35844]
y=[0,1,2,3,4,5,6,7]
#绘制条形图
plt.barh(y,x,color='green',label='销售量')
#创建隐藏x轴的网格线
plt.grid(axis='x')
#设置x轴标题
plt.xlabel('销售量/本')
#设置y轴标题
plt.ylabel('年份')
#创建x轴刻度
plt.xticks(range(10000,100000,10000))
#创建y轴刻度
plt.yticks(range(0,8,1),['2015','2016','2017','2018','2019','2020','2021','2022'])
#创建文本标签
for a,b in zip(x,y):
plt.text(a,b,'%.1f'%a,ha='left',va='bottom',fontsize=9)
#创建图例
plt.legend(labels=['销售量'],loc=1)
plt.show()
上面代码的运行结果如下图所示。


图 1 单条形图

再例如,绘制一个多条形图,示例代码如下:
import matplotlib.pyplot as plt
#显示中文
plt.rcParams['font.sans-serif']='SimHei'
#显示负号
plt.rcParams['axes.unicode_minus']=False
#x轴的刻度线向内显示
plt.rcParams['xtick.direction']='in'
#y轴的刻度线向外显示
plt.rcParams['ytick.direction']='out'
#创建画布
plt.figure(figsize=(10,8))
#条形图标题
plt.title('销售量分析表')
#数据
x1=[25140,68541,36584,35864,57841,78520,46333,35844]
x2=[35221,45214,45888,100254,52365,84512,75877,75845]
x3=[75222,36525,52364,62541,78555,35214,56241,62541]
x4=[35985,42555,75255,42515,92415,12545,66541,44525]
y1=[0,1,2,3,4,5,6,7]
y2=[0.2,1.2,2.2,3.2,4.2,5.2,6.2,7.2]
y3=[0.4,1.4,2.4,3.4,4.4,5.4,6.4,7.4]
y4=[0.6,1.6,2.6,3.6,4.6,5.6,6.6,7.6]
#绘制条形图
plt.barh(y1,x1,height=0.2,color='green',label='《C语言》')
plt.barh(y2,x2,height=0.2,color='red',label='《Python》')
plt.barh(y3,x3,height=0.2,color='yellow',label='《Java》')
plt.barh(y4,x4,height=0.2,color='pink',label='《Go》')
#创建隐藏x轴的网格线
plt.grid(axis='x')
#设置x轴标题
plt.xlabel('销售量/本')
#设置y轴标题
plt.ylabel('年份')
#创建x轴刻度
plt.xticks(range(10000,100000,10000))
#创建y轴刻度
plt.yticks(range(0,8,1),['2015','2016','2017','2018','2019','2020','2021','2022'])
#创建文本标签
for a,b in zip(x1,y1):
plt.text(a,b,'%.1f'%a,ha='left',va='bottom',fontsize=9)
#创建图例
plt.legend(labels=['《C语言》','《Python》',
'《Java》','《Go》'],loc=4)
plt.show()
上面代码的运行结果如下图所示。


图 2 多条形图

相关文章