matplotlib柱状图(条形图)

概述

柱状图的高度表示各类别的数值多少,宽度是固定的

官方文档:
https://matplotlib.org/api/_as_gen/matplotlib.pyplot.bar.html?highlight=bar#matplotlib.pyplot.bar

当数据量过多,宽度不够,文字过长是,使用下面这种横向柱状图

语法

  1. matplotlib.pyplot.bar(x, height, width=0.8)
参数说明
  • x:x轴数值
  • height:y轴数值
  • width:宽度,默认0.8

例子

  1. import matplotlib.pyplot as plt
  2. import matplotlib.font_manager as fm
  3. # 设置字体
  4. my_font=fm.FontProperties(fname=r'C:\Windows\Fonts\msyh.ttc')
  5. apps=['社交','视频','新闻阅读','实用工具','音乐','游戏','金融','浏览器']
  6. datas=[96.2,70.2,60.3,59.0,51.9,42.1,39.3,38.6]
  7. plt.figure(figsize=(10,4),dpi=100)
  8. plt.bar(apps,datas,width=0.3)
  9. # 设置x轴刻度,让刻度显示app名字
  10. plt.xticks(range(len(apps)),apps,fontproperties=my_font,rotation=45)
  11. plt.show()

例子pandas读取电影票房

  1. import pandas as pd
  2. import matplotlib.pyplot as plt
  3. df=pd.read_csv(r'C:\Users\mym\Desktop\数据集\IMDB-Movie-Data.csv' )
  4. plt.figure(figsize=(20,30),dpi=100)
  5. df100=df.loc[0:100]
  6. r=range(len(df100['Title']))
  7. plt.barh(r,df100['Revenue (Millions)'],height=0.3)
  8. plt.yticks(r,df100['Title'])
  9. plt.show()

横向柱状图

官方文档:
https://matplotlib.org/api/_as_gen/matplotlib.pyplot.barh.html?highlight=barh#matplotlib.pyplot.barh

语法

  1. matplotlib.pyplot.barh(y, width, height=0.8,**kwargs)
参数
  • y:y轴数值
  • width:x轴数值
  • height:高度,默认0.8
  • **kwargs:关键字参数
    • color :设置颜色

例子

当数据过多,x轴名字过长时,就需要用横向柱状图显示

  1. import matplotlib.pyplot as plt
  2. import matplotlib.font_manager as fm
  3. # 设置字体
  4. my_font=fm.FontProperties(fname=r'C:\Windows\Fonts\msyh.ttc')
  5. apps=['社交','视频','新闻阅读','实用工具','音乐','游戏','金融','浏览器']
  6. datas=[96.2,70.2,60.3,59.0,51.9,42.1,39.3,38.6]
  7. # y轴,0在下面,最大值在上面,为了让社交显示在上面,要倒序
  8. y_datas=range(len(apps),0,-1)
  9. plt.figure(figsize=(10,4),dpi=100)
  10. plt.barh(y_datas,datas,height=0.5)
  11. plt.yticks(y_datas,apps,fontproperties=my_font)
  12. # plt.savefig('./条形图4.png')
  13. plt.show()

例子:多个柱状图

见下面柱状图,是网民职业职业结构对比图,将两年的数据都显示出来,进行 对比

  1. import matplotlib.pyplot as plt
  2. import matplotlib.font_manager as fm
  3. # 设置字体
  4. my_font=fm.FontProperties(fname=r'C:\Windows\Fonts\msyh.ttc')
  5. apps=['学生','企业/公司高层管理人员','企业/公司中层管理人员','企业/公司一般职业','专业技术人员','商业服务业职工','制造生产型企业工人','个体户/自由职业者']
  6. datas_2016=[25,0.5,2.3,11.9,4.8,4.4,4.5,22.7]
  7. datas_2017=[25.4,0.5,1.9,12.2,4.8,4.3,3.5,21.3]
  8. #柱的高度
  9. bar_height=0.3
  10. # 间距
  11. spacing=1
  12. # y轴,0在下面,最大值在上面,为了让社交显示在上面,要倒序
  13. l=list(item*spacing for item in range(len(apps)))[::-1]
  14. l2=[item+bar_height for item in l]
  15. l3=[item+bar_height/2+0.05 for item in l]
  16. print(l)
  17. print(l2)
  18. print(l3)
  19. plt.figure(figsize=(10,8),dpi=100)
  20. plt.barh(l2,datas_2016,height=bar_height,label='2016年')
  21. plt.barh(l,datas_2017,height=bar_height,label='2017年')
  22. plt.xticks(range(0,31),range(0,31),fontproperties=my_font)
  23. plt.yticks(l3,apps,fontproperties=my_font)
  24. plt.legend(prop=my_font,loc =1)
  25. # plt.savefig('./条形图4.png')
  26. plt.show()

原文出处:https://malaoshi.top/show_1EF3oB2biGVS.html