Python数据分析(四) —— 绘制横竖条形图
条形图是用宽度相同的条形的高度或长短来表示数据多少的图形。用来绘制离散的数据,能够一眼看出各个数据的大小,比较数据之间的差异。
绘制一个简单的条形图与折线图的绘制方法也是大体一致,只需要把拟合方式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数据分析(四) —— 绘制横竖条形图相关推荐
- python使用matplotlib绘制水平条形图并在条形图上添加实际数值标签实战
python使用matplotlib绘制水平条形图并在条形图上添加实际数值标签实战 # 绘制水平条形图进行模型对比 x_labels = ["LogisticRegression" ...
- Windows 10 - Python - 数据分析 - 年龄分组统计 - 条形图 - matplotlib
最近需要用到条形图,统计年龄,所以查了一下资料,修改为满足自己要求的条形图,下面看代码自行领会. 测试环境: 操作系统: Window 10 工具:Pycharm Python: 3.7 matplo ...
- Python数据分析(三) —— 绘制简单的散点图
散点图,顾名思义是一些散乱的点构成的图.那么这些散乱的点有什么作用呢?散点图通过用两组数据构成多个坐标点,考察坐标点的分布,判断两变量之间是否存在某种关联或总结坐标点的分布模式. 绘制方法大体上与折线 ...
- python数据分析-柱状图绘制及常用参数设置
linux+pycharm+anaconda #柱形图绘制与参数设置 #plt.bar(x,height,width,bottom,align,color,edgecolor) "" ...
- python数据分析从入门到精通电子工业出版社_荐书丨Python数据分析从入门到精通...
点击上方"程序人生",选择"置顶公众号" 第一时间关注程序猿(媛)身边的故事 采用Python 3.6版本,兼容Python 3.X等众多版本 一本书搞定IPy ...
- Python 数据分析三剑客之 Matplotlib(六):直方图 / 柱状图 / 条形图的绘制
CSDN 课程推荐:<Python 数据分析与挖掘>,讲师刘顺祥,浙江工商大学统计学硕士,数据分析师,曾担任唯品会大数据部担任数据分析师一职,负责支付环节的数据分析业务.曾与联想.亨氏.网 ...
- Python 数据分析三剑客之 Matplotlib(四):线性图的绘制
CSDN 课程推荐:<Python 数据分析与挖掘>,讲师刘顺祥,浙江工商大学统计学硕士,数据分析师,曾担任唯品会大数据部担任数据分析师一职,负责支付环节的数据分析业务.曾与联想.亨氏.网 ...
- python绘制条形图-Python数据分析条形图的各种绘制方式
# 导入模块 import matplotlib.pyplot as plt import numpy as np import pandas as pd # 导入数据 traffic_volume ...
- Python 数据分析三剑客之 Matplotlib(十):3D 图的绘制
CSDN 课程推荐:<Python 数据分析与挖掘>,讲师刘顺祥,浙江工商大学统计学硕士,数据分析师,曾担任唯品会大数据部担任数据分析师一职,负责支付环节的数据分析业务.曾与联想.亨氏.网 ...
最新文章
- linux系统下tar/gz/7z/xz/bz2/zip等各种格式的打包压缩解压
- mybatis自己学习的一些总结
- 【elasticsearch系列】安装elasticsearch-head插件
- workerman mysql git_swoole和workerman哪个更易开发?
- docker 容器 增删改查
- 学习使用Django一 安装虚拟环境
- bzoj 4556 字符串
- 使用Python3将BT种子转磁力链接
- 基于CIM的新型智慧城市发展政策解析
- opencapwap简要分析
- median frequency balancing
- 北京双线机房服务器托管
- 使用Python绘制热图的库 pyHeatMap 使用Python绘制热图的库 pyHeatMap
- 网站转化率与漏斗模型
- Python pyglet 自制3D引擎入门(一) -- 绘制几何体、创建3D场景
- 解决Windows XP 系统下,用户登录一直循环提示激活
- 【历史上的今天】11 月 19 日:Microsoft Office 首次发布;谷歌开源 Chrome OS;Twitter 创始人出生
- Matlab实现复化求积公式(梯形)
- <C++> 通讯录管理系统(纯手写含源码)
- KITTI RAW 百度云盘