条形图是用宽度相同的条形的高度或长短来表示数据多少的图形。用来绘制离散的数据,能够一眼看出各个数据的大小,比较数据之间的差异。

绘制一个简单的条形图与折线图的绘制方法也是大体一致,只需要把拟合方式plt.plot()修改为plt.bar()即可。例如绘制2017年内地电影票房前20的电影和电影票房数据,如何对数据进行可视化分析呢?无疑是进行条形图分析。

老规矩,上代码:

# coding =utf-8
from matplotlib import pyplot as plt
from matplotlib import font_managermy_font = font_manager.FontProperties(fname="C:\Windows\Fonts\MSYHL.TTC")a = ['战狼2', '速度与激情8', '功夫瑜伽', '西游伏妖篇', '变形金刚5:最后的骑士', '摔跤吧,爸爸',
'加勒比海盗5:死无对证', '金刚:骷髅岛', '极限特工:终极回归', '生化危机6:终章', '乘风破浪',
'神偷奶爸3', '智取威虎山', '大闹天竺', '金刚狼3:殊死一战', '蜘蛛侠:英雄归来', '悟空传', '银河护卫队2',
'情圣', '新木乃伊']b = [56.01, 26.94, 17.53, 16.49, 15.45, 12.96, 11.8, 11.61, 11.28, 11.12, 10.49, 10.3, 8.75, 7.55, 7.32, 6.99, 6.88, 6.86, 6.58, 6.23]# 设置图像大小
plt.figure(figsize=(20, 15), dpi=80)# 绘制条形图
plt.bar(range(len(a)), b, width=1)# 设置字符串到X轴
plt.xticks(range(len(a)), a, fontproperties=my_font, rotation=90)# 显示图形
plt.show()

结果如下:

程序分析:可以看出,绘制的方法与折线图、散点图大体一致,只是把拟合的方式改成了plt.bar(),其余的大体一致。不过需要注意的是这个散点图需要设置每个条柱的宽度不能超过1,否则会出现混叠!

大家可以发现,这个电影的名字在下方并不好看,对做数据分析的人并不友好,那么就需要将上述的竖条形图转变成横条形图。具体方法很简单,只需要将竖条形图的plt.bar()改为plt.barh()即可。完整代码如下:

# coding =utf-8
from matplotlib import pyplot as plt
from matplotlib import font_managermy_font = font_manager.FontProperties(fname="C:\Windows\Fonts\MSYHL.TTC")a = ['战狼2', '速度与激情8', '功夫瑜伽', '西游伏妖篇', '变形金刚5:最后的骑士', '摔跤吧,爸爸',
'加勒比海盗5:死无对证', '金刚:骷髅岛', '极限特工:终极回归', '生化危机6:终章', '乘风破浪',
'神偷奶爸3', '智取威虎山', '大闹天竺', '金刚狼3:殊死一战', '蜘蛛侠:英雄归来', '悟空传', '银河护卫队2',
'情圣', '新木乃伊']b = [56.01, 26.94, 17.53, 16.49, 15.45, 12.96, 11.8, 11.61, 11.28, 11.12, 10.49, 10.3, 8.75, 7.55, 7.32, 6.99, 6.88, 6.86, 6.58, 6.23]# 设置图像大小
plt.figure(figsize=(20,8),dpi=80)# 绘制条形图
plt.barh(range(len(a)), b, height=0.3, color='orange')  # 区别于竖的条形图 不能使用width# 设置字符串到X轴
plt.yticks(range(len(a)), a, fontproperties=my_font)plt.grid(alpha=0.3)# 保存图片
plt.savefig('./movie.png')# 显示图形
plt.show()

运行结果如下:

可以看得出,横条形图在这里效果比竖条形图效果好,更容易观测与分析。使用时需要根据实际情况进行斟酌,合理选取。

那么问题又来了,如果我们知道了四部电影:猩球崛起3:终极之战、敦煌尔克、蜘蛛侠:英雄归来、战狼2在三天之内的票房数目,想知道电影本身在这三天自己的票房变化,怎么来绘制条形图呢?

先上代码:

from matplotlib import pyplot as plt
from matplotlib import font_managermy_font = font_manager.FontProperties(fname="C:\Windows\Fonts\MSYHL.TTC")a = ['猩球崛起3:终极之战', '敦刻尔克', '蜘蛛侠:英雄归来', '战狼2']
b_16 = [15746, 312, 4497, 319]
b_15 = [12357, 156, 2045, 168]
b_14 = [2358, 399, 2358, 362]bar_width = 0.2 # 乘以3小于1# 设置相邻的宽度
x_14 =list(range(len(a)))
x_15 = [i+bar_width for i in x_14]
x_16 = [i+bar_width*2 for i in x_14]# 设置图像大小
plt.figure(figsize=(20,8),dpi=80)# 设置X轴
plt.xticks(x_15,a,fontproperties=my_font)# 绘制图像 设置条形图宽度
plt.bar(range(len(a)), b_14, width=bar_width, label='9月14日')
plt.bar(x_15, b_15, width=bar_width, label='9月15日')
plt.bar(x_16, b_16, width=bar_width, label='9月16日')# 设置图例
plt.legend(prop=my_font)# 显示图像
plt.show()

运行结果如下:

程序分析:可以看出来,上图很好的完成了题目的要求。猩球崛起3:终极之战的三日票房最高,同时三日票房总数呈现上升趋势;敦刻尔克与战狼2的电影票房总体都比较低;蜘蛛侠:英雄归来的票房虽然不多,但有上升趋势,票房数目中等。那么是怎么进行操作的呢?相当于在一幅图中绘制三个直方图,也就是四个电影在三天的票房数目。通过将宽度设置,实现三个直方图的无缝连接,使得形成一部电影在三天的票房数目的对比效果。即第一个条形图开始,第二个条形图起始点加上一个条形图的宽度,第三个条形图加上两个条形图的宽度,然后形成三个直方图的刚好契合。需要注意的是:这个每个直方图的宽度不能超过1/3,也就是三个重叠在一起宽度不能超过1,否则会形成条形图混叠。如下图:

总结:条形图绘制的要点就是使用plt.bar()或者plt.barh(),一定要注意条形图宽度的设置,不能超过1,否则会混叠,影响效果,达不到目标要求。

Python数据分析(四) —— 绘制横竖条形图相关推荐

  1. python使用matplotlib绘制水平条形图并在条形图上添加实际数值标签实战

    python使用matplotlib绘制水平条形图并在条形图上添加实际数值标签实战 # 绘制水平条形图进行模型对比 x_labels = ["LogisticRegression" ...

  2. Windows 10 - Python - 数据分析 - 年龄分组统计 - 条形图 - matplotlib

    最近需要用到条形图,统计年龄,所以查了一下资料,修改为满足自己要求的条形图,下面看代码自行领会. 测试环境: 操作系统: Window 10 工具:Pycharm Python: 3.7 matplo ...

  3. Python数据分析(三) —— 绘制简单的散点图

    散点图,顾名思义是一些散乱的点构成的图.那么这些散乱的点有什么作用呢?散点图通过用两组数据构成多个坐标点,考察坐标点的分布,判断两变量之间是否存在某种关联或总结坐标点的分布模式. 绘制方法大体上与折线 ...

  4. python数据分析-柱状图绘制及常用参数设置

    linux+pycharm+anaconda #柱形图绘制与参数设置 #plt.bar(x,height,width,bottom,align,color,edgecolor) "" ...

  5. python数据分析从入门到精通电子工业出版社_荐书丨Python数据分析从入门到精通...

    点击上方"程序人生",选择"置顶公众号" 第一时间关注程序猿(媛)身边的故事 采用Python 3.6版本,兼容Python 3.X等众多版本 一本书搞定IPy ...

  6. Python 数据分析三剑客之 Matplotlib(六):直方图 / 柱状图 / 条形图的绘制

    CSDN 课程推荐:<Python 数据分析与挖掘>,讲师刘顺祥,浙江工商大学统计学硕士,数据分析师,曾担任唯品会大数据部担任数据分析师一职,负责支付环节的数据分析业务.曾与联想.亨氏.网 ...

  7. Python 数据分析三剑客之 Matplotlib(四):线性图的绘制

    CSDN 课程推荐:<Python 数据分析与挖掘>,讲师刘顺祥,浙江工商大学统计学硕士,数据分析师,曾担任唯品会大数据部担任数据分析师一职,负责支付环节的数据分析业务.曾与联想.亨氏.网 ...

  8. python绘制条形图-Python数据分析条形图的各种绘制方式

    # 导入模块 import matplotlib.pyplot as plt import numpy as np import pandas as pd # 导入数据 traffic_volume ...

  9. Python 数据分析三剑客之 Matplotlib(十):3D 图的绘制

    CSDN 课程推荐:<Python 数据分析与挖掘>,讲师刘顺祥,浙江工商大学统计学硕士,数据分析师,曾担任唯品会大数据部担任数据分析师一职,负责支付环节的数据分析业务.曾与联想.亨氏.网 ...

最新文章

  1. linux系统下tar/gz/7z/xz/bz2/zip等各种格式的打包压缩解压
  2. mybatis自己学习的一些总结
  3. 【elasticsearch系列】安装elasticsearch-head插件
  4. workerman mysql git_swoole和workerman哪个更易开发?
  5. docker 容器 增删改查
  6. 学习使用Django一 安装虚拟环境
  7. bzoj 4556 字符串
  8. 使用Python3将BT种子转磁力链接
  9. 基于CIM的新型智慧城市发展政策解析
  10. opencapwap简要分析
  11. median frequency balancing
  12. 北京双线机房服务器托管
  13. 使用Python绘制热图的库 pyHeatMap 使用Python绘制热图的库 pyHeatMap
  14. 网站转化率与漏斗模型
  15. Python pyglet 自制3D引擎入门(一) -- 绘制几何体、创建3D场景
  16. 解决Windows XP 系统下,用户登录一直循环提示激活
  17. 【历史上的今天】11 月 19 日:Microsoft Office 首次发布;谷歌开源 Chrome OS;Twitter 创始人出生
  18. Matlab实现复化求积公式(梯形)
  19. <C++> 通讯录管理系统(纯手写含源码)
  20. KITTI RAW 百度云盘

热门文章

  1. Java中throw和throws有什么区别?
  2. 春眠不觉晓,二极管种类知多少?「TVS、整流、稳压、肖特基、快回复、续流、发光LED、变容」
  3. 光伏系统MPPT、恒功率控制切换MATLAB仿真
  4. PATA1138_偷鸡大法
  5. ESModule 系列 :构建下一代基础设施 PDN
  6. Android常用加密方式
  7. 计算机多媒体对语文教学的提高,语文教学中多媒体教学运用心得
  8. java空对象怎么判断,java怎么判断对象为空
  9. uvc摄像头代码解析4
  10. 移植shellinabox到ARM嵌入式开发板