10【matplotlib常用统计图】02绘制条形图
案例
假设你获取到了2017年内地电影票房前20的电影(列表a)和电影票房数据(列表b),那么如何更加直观的展示该数据?
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](单位:亿)
数据来源:http://58921.com/alltime/2017
在什么时候绘制条形图
- 统计离散的数据,也就是数据之间本身并没有什么关系
如何绘制条形图
代码+结果1.0
# -*- coding: utf-8 -*-'''
@Time : 2020/11/28 23:19
@Author : yuhui
@Email : 3476237164@qq.com
@FileName: matplotlib_7.py
@Software: PyCharm
'''"""10【matplotlib常用统计图】02绘制条形图""""""假设你获取到了2017年内地电影票房前20的电影(列表a)和电影票房数据(列表b),那么如何更加直观的展示该数据?
数据来源:http://58921.com/alltime/2017"""from matplotlib import pyplot as plt# 解决中文乱码
plt.rcParams["font.sans-serif"]=["KaiTi"]
plt.rcParams["font.family"]="sans-serif"
# 解决符号无法显示的问题
plt.rcParams['axes.unicode_minus'] = False # 解决保存图像时负号'-'显示为方块的问题"""设置图形大小和图片品质"""
fig=plt.figure(figsize=(16,9),dpi=100,
)# x轴数据
x = ["战狼2","速度与激情8","功夫瑜伽","西游伏妖篇","变形金刚5:最后的骑士","摔跤吧!爸爸","加勒比海盗5:死无对证","金刚:骷髅岛","极限特工:终极回归","生化危机6:终章","乘风破浪","神偷奶爸3","智取威虎山","大闹天竺","金刚狼3:殊死一战","蜘蛛侠:英雄归来","悟空传","银河护卫队2","情圣","新木乃伊"]# y轴数据
y=[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.bar(range(len(x)),y, # 注意:x轴数据应该是数字的列表# 然后我们再绘制x轴刻度 将x轴字符数据与x轴数字列表做一个一一对应width=0.3, # 条形图的宽度color=["#98FB98","#8FBC8F","#32CD32","#228B22","#008000","#006400","#7FFF00"], # 条形图中每一条形的颜色) # plt.bar(x轴数据,y轴数据) 绘制条形图plt.show()
一步步修改
设置x轴刻度字符
如何设置
# 设置x轴刻度字符
_x=["战狼2","速度与激情8","功夫瑜伽","西游伏妖篇","变形金刚5:最后的骑士","摔跤吧!爸爸","加勒比海盗5:死无对证","金刚:骷髅岛","极限特工:终极回归","生化危机6:终章","乘风破浪","神偷奶爸3","智取威虎山","大闹天竺","金刚狼3:殊死一战","蜘蛛侠:英雄归来","悟空传","银河护卫队2","情圣","新木乃伊"]
plt.xticks(range(len(_x)),_x,rotation=90) # 注意:rotation设置的是中心旋转,也就是以【x轴刻度】的中心为基点旋转一定的角度
解决方法
1.将图片变大
2.将刻度字符换行显示在x轴上
1.将图片变大
将图片保存到本地看一下是什么情况
2.将刻度字符换行显示在x轴上
# 设置x轴刻度字符
# 当名字比较长的时候,在名字中间插入一个\n换行符,使名字在x轴上显示的时候会换行显示,不至于过长超出了图片的长度
_x = ["战狼2","速度与激情8","功夫瑜伽","西游伏妖篇","变形金刚5:\n最后的骑士","摔跤吧!\n爸爸","加勒比海盗5:\n死无对证","金刚:\n骷髅岛","极限特工:\n终极回归","生化危机6:\n终章","乘风破浪","神偷奶爸3","智取威虎山","大闹天竺","金刚狼3:\n殊死一战","蜘蛛侠:\n英雄归来","悟空传","银河护卫队2","情圣","新木乃伊"]
plt.xticks(range(len(_x)),_x,rotation=90) # 注意:rotation设置的是中心旋转,也就是以【x轴刻度】的中心为基点旋转一定的角度
最终的效果图
问题
我们想要的条形图
如何绘制横着的条形图
代码+结果1.0
# -*- coding: utf-8 -*-'''
@Time : 2020/11/29 9:48
@Author : yuhui
@Email : 3476237164@qq.com
@FileName: matplotlib_8.py
@Software: PyCharm
'''"""10【matplotlib常用统计图】02绘制条形图"""from matplotlib import pyplot as plt# 解决中文乱码
plt.rcParams["font.sans-serif"]=["KaiTi"]
plt.rcParams["font.family"]="sans-serif"
# 解决符号无法显示的问题
plt.rcParams['axes.unicode_minus'] = False # 解决保存图像时负号'-'显示为方块的问题"""设置图形大小和图片品质"""
fig=plt.figure(figsize=(16,9),dpi=100,
)# x轴数据
x = ["战狼2","速度与激情8","功夫瑜伽","西游伏妖篇","变形金刚5:最后的骑士","摔跤吧!爸爸","加勒比海盗5:死无对证","金刚:骷髅岛","极限特工:终极回归","生化危机6:终章","乘风破浪","神偷奶爸3","智取威虎山","大闹天竺","金刚狼3:殊死一战","蜘蛛侠:英雄归来","悟空传","银河护卫队2","情圣","新木乃伊"]# y轴数据
y=[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.barh()
plt.barh(range(len(x)),y,width=0.3,
color=["#98FB98","#8FBC8F","#32CD32","#228B22","#008000","#006400","#7FFF00"], # 条形图中每一条形的颜色
)# 设置x轴刻度字符
# 当名字比较长的时候,在名字中间插入一个\n换行符,使名字在x轴上显示的时候会换行显示,不至于过长超出了图片的长度
_x = ["战狼2","速度与激情8","功夫瑜伽","西游伏妖篇","变形金刚5:\n最后的骑士","摔跤吧!\n爸爸","加勒比海盗5:\n死无对证","金刚:\n骷髅岛","极限特工:\n终极回归","生化危机6:\n终章","乘风破浪","神偷奶爸3","智取威虎山","大闹天竺","金刚狼3:\n殊死一战","蜘蛛侠:\n英雄归来","悟空传","银河护卫队2","情圣","新木乃伊"]
plt.xticks(range(len(_x)),_x,rotation=90) # 注意:rotation设置的是中心旋转,也就是以【x轴刻度】的中心为基点旋转一定的角度plt.show()
代码在运行的时候出现了错误
为什么会出现这个错误呢?
我们可以看一下plt.barh
的源代码
结合我们写的代码和源代码分析一下错误出现的原因
第一次赋值是通过位置形参给width赋值,第二次赋值是手动给width赋值
所以一共是赋了两次值,出现了错误
修改之后再次运行
# 如何绘制横着的条形图 plt.barh()
plt.barh(range(len(x)), # 表示每一条在轴上的位置y, # 每一条的长度height=0.3, # 表示每一条的宽度,由于是横着的条形图,是在竖直方向上,所以使用height参数
color=["#98FB98","#8FBC8F","#32CD32","#228B22","#008000","#006400","#7FFF00"], # 条形图中每一条形的颜色
)
代码+结果2.0
"""设置x轴刻度和y轴刻度字符"""
_y=["战狼2","速度与激情8","功夫瑜伽","西游伏妖篇","变形金刚5:\n最后的骑士","摔跤吧!\n爸爸","加勒比海盗5:\n死无对证","金刚:\n骷髅岛","极限特工:\n终极回归","生化危机6:\n终章","乘风破浪","神偷奶爸3","智取威虎山","大闹天竺","金刚狼3:\n殊死一战","蜘蛛侠:\n英雄归来","悟空传","银河护卫队2","情圣","新木乃伊"]
plt.yticks(range(len(_y)),_y,rotation=90)
"""设置x轴刻度和y轴刻度字符"""
_y=["战狼2","速度与激情8","功夫瑜伽","西游伏妖篇","变形金刚5:最后的骑士","摔跤吧!爸爸","加勒比海盗5:死无对证","金刚:骷髅岛","极限特工:终极回归","生化危机6:终章","乘风破浪","神偷奶爸3","智取威虎山","大闹天竺","金刚狼3:殊死一战","蜘蛛侠:英雄归来","悟空传","银河护卫队2","情圣","新木乃伊"]
plt.yticks(range(len(_y)),_y)
添加网格线
最终效果图
总结
绘制竖着的条形图
- 如何绘制
plt.bar(x轴数据,y轴数据) # 绘制条形图
- 一些参数
# 绘制条形图
plt.bar(range(len(x)),y, # 注意:x轴数据应该是数字的列表# 然后我们再绘制x轴刻度 将x轴字符数据与x轴数字列表做一个一一对应width=0.3, # 条形图的宽度color=["#98FB98","#8FBC8F","#32CD32","#228B22","#008000","#006400","#7FFF00"], # 条形图中每一条形的颜色) # plt.bar(x轴数据,y轴数据) 绘制条形图
- 设置x轴刻度和y轴刻度,给每一条命名
# 设置x轴刻度字符
# 当名字比较长的时候,在名字中间插入一个\n换行符,使名字在x轴上显示的时候会换行显示,不至于过长超出了图片的长度
_x = ["战狼2","速度与激情8","功夫瑜伽","西游伏妖篇","变形金刚5:\n最后的骑士","摔跤吧!\n爸爸","加勒比海盗5:\n死无对证","金刚:\n骷髅岛","极限特工:\n终极回归","生化危机6:\n终章","乘风破浪","神偷奶爸3","智取威虎山","大闹天竺","金刚狼3:\n殊死一战","蜘蛛侠:\n英雄归来","悟空传","银河护卫队2","情圣","新木乃伊"]
plt.xticks(range(len(_x)),_x,rotation=90) # 注意:rotation设置的是中心旋转,也就是以【x轴刻度】的中心为基点旋转一定的角度
- x轴字符换行显示
_x = ["战狼2","速度与激情8","功夫瑜伽","西游伏妖篇","变形金刚5:\n最后的骑士","摔跤吧!\n爸爸","加勒比海盗5:\n死无对证","金刚:\n骷髅岛","极限特工:\n终极回归","生化危机6:\n终章","乘风破浪","神偷奶爸3","智取威虎山","大闹天竺","金刚狼3:\n殊死一战","蜘蛛侠:\n英雄归来","悟空传","银河护卫队2","情圣","新木乃伊"]
绘制横着的条形图
- 如何绘制
plt.barh(条在y轴上的位置,条的长度)
# 如何绘制横着的条形图 plt.barh(条在y轴上的位置,条的长度)
plt.barh(range(len(x)), # 表示每一条在轴上的位置y, # 每一条的长度height=0.3, # 表示每一条的宽度,由于是横着的条形图,是在竖直方向上,所以使用height参数
color=["#98FB98","#8FBC8F","#32CD32","#228B22","#008000","#006400","#7FFF00"], # 条形图中每一条形的颜色
)
- 一些参数
# 如何绘制横着的条形图 plt.barh(条在y轴上的位置,条的长度)
plt.barh(range(len(x)), # 表示每一条在轴上的位置y, # 每一条的长度height=0.3, # 表示每一条的宽度,由于是横着的条形图,是在竖直方向上,所以使用height参数
color=["#98FB98","#8FBC8F","#32CD32","#228B22","#008000","#006400","#7FFF00"], # 条形图中每一条形的颜色
)
- 重新设置条的名字
"""设置x轴刻度和y轴刻度字符"""
_y=["战狼2","速度与激情8","功夫瑜伽","西游伏妖篇","变形金刚5:最后的骑士","摔跤吧!爸爸","加勒比海盗5:死无对证","金刚:骷髅岛","极限特工:终极回归","生化危机6:终章","乘风破浪","神偷奶爸3","智取威虎山","大闹天竺","金刚狼3:殊死一战","蜘蛛侠:英雄归来","悟空传","银河护卫队2","情圣","新木乃伊"]
plt.yticks(range(len(_y)),_y)
所有的代码
代码一(绘制竖着的条形图)
# -*- coding: utf-8 -*-'''
@Time : 2020/11/28 23:19
@Author : yuhui
@Email : 3476237164@qq.com
@FileName: matplotlib_7.py
@Software: PyCharm
'''"""10【matplotlib常用统计图】02绘制条形图""""""假设你获取到了2017年内地电影票房前20的电影(列表a)和电影票房数据(列表b),那么如何更加直观的展示该数据?
数据来源:http://58921.com/alltime/2017"""from matplotlib import pyplot as plt# 解决中文乱码
plt.rcParams["font.sans-serif"]=["KaiTi"]
plt.rcParams["font.family"]="sans-serif"
# 解决符号无法显示的问题
plt.rcParams['axes.unicode_minus'] = False # 解决保存图像时负号'-'显示为方块的问题"""设置图形大小和图片品质"""
fig=plt.figure(figsize=(16,9),dpi=100,
)# x轴数据
x = ["战狼2","速度与激情8","功夫瑜伽","西游伏妖篇","变形金刚5:最后的骑士","摔跤吧!爸爸","加勒比海盗5:死无对证","金刚:骷髅岛","极限特工:终极回归","生化危机6:终章","乘风破浪","神偷奶爸3","智取威虎山","大闹天竺","金刚狼3:殊死一战","蜘蛛侠:英雄归来","悟空传","银河护卫队2","情圣","新木乃伊"]# y轴数据
y=[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.bar(range(len(x)),y, # 注意:x轴数据应该是数字的列表# 然后我们再绘制x轴刻度 将x轴字符数据与x轴数字列表做一个一一对应width=0.3, # 条形图的宽度color=["#98FB98","#8FBC8F","#32CD32","#228B22","#008000","#006400","#7FFF00"], # 条形图中每一条形的颜色) # plt.bar(x轴数据,y轴数据) 绘制条形图# 设置x轴刻度字符
# 当名字比较长的时候,在名字中间插入一个\n换行符,使名字在x轴上显示的时候会换行显示,不至于过长超出了图片的长度
_x = ["战狼2","速度与激情8","功夫瑜伽","西游伏妖篇","变形金刚5:\n最后的骑士","摔跤吧!\n爸爸","加勒比海盗5:\n死无对证","金刚:\n骷髅岛","极限特工:\n终极回归","生化危机6:\n终章","乘风破浪","神偷奶爸3","智取威虎山","大闹天竺","金刚狼3:\n殊死一战","蜘蛛侠:\n英雄归来","悟空传","银河护卫队2","情圣","新木乃伊"]
plt.xticks(range(len(_x)),_x,rotation=90) # 注意:rotation设置的是中心旋转,也就是以【x轴刻度】的中心为基点旋转一定的角度# # 设置x轴刻度字符
# _x=["战狼2","速度与激情8","功夫瑜伽","西游伏妖篇","变形金刚5:最后的骑士","摔跤吧!爸爸","加勒比海盗5:死无对证","金刚:骷髅岛","极限特工:终极回归","生化危机6:终章","乘风破浪","神偷奶爸3","智取威虎山","大闹天竺","金刚狼3:殊死一战","蜘蛛侠:英雄归来","悟空传","银河护卫队2","情圣","新木乃伊"]
# plt.xticks(range(len(_x)),_x,rotation=90) # 注意:rotation设置的是中心旋转,也就是以【x轴刻度】的中心为基点旋转一定的角度# plt.savefig("../data/matplotlib_7.svg")plt.show()
代码二(绘制横着的条形图)
# -*- coding: utf-8 -*-'''
@Time : 2020/11/29 9:48
@Author : yuhui
@Email : 3476237164@qq.com
@FileName: matplotlib_8.py
@Software: PyCharm
'''"""10【matplotlib常用统计图】02绘制条形图"""from matplotlib import pyplot as plt# 解决中文乱码
plt.rcParams["font.sans-serif"]=["KaiTi"]
plt.rcParams["font.family"]="sans-serif"
# 解决符号无法显示的问题
plt.rcParams['axes.unicode_minus'] = False # 解决保存图像时负号'-'显示为方块的问题"""设置图形大小和图片品质"""
fig=plt.figure(figsize=(16,9),dpi=100,
)# x轴数据
x = ["战狼2","速度与激情8","功夫瑜伽","西游伏妖篇","变形金刚5:最后的骑士","摔跤吧!爸爸","加勒比海盗5:死无对证","金刚:骷髅岛","极限特工:终极回归","生化危机6:终章","乘风破浪","神偷奶爸3","智取威虎山","大闹天竺","金刚狼3:殊死一战","蜘蛛侠:英雄归来","悟空传","银河护卫队2","情圣","新木乃伊"]# y轴数据
y=[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.barh()
plt.barh(range(len(x)), # 表示每一条在轴上的位置y, # 每一条的长度height=0.3, # 表示每一条的宽度,由于是横着的条形图,是在竖直方向上,所以使用height参数
color=["#98FB98","#8FBC8F","#32CD32","#228B22","#008000","#006400","#7FFF00"], # 条形图中每一条形的颜色
)# # 设置x轴刻度字符
# # 当名字比较长的时候,在名字中间插入一个\n换行符,使名字在x轴上显示的时候会换行显示,不至于过长超出了图片的长度
# _x = ["战狼2","速度与激情8","功夫瑜伽","西游伏妖篇","变形金刚5:\n最后的骑士","摔跤吧!\n爸爸","加勒比海盗5:\n死无对证","金刚:\n骷髅岛","极限特工:\n终极回归","生化危机6:\n终章","乘风破浪","神偷奶爸3","智取威虎山","大闹天竺","金刚狼3:\n殊死一战","蜘蛛侠:\n英雄归来","悟空传","银河护卫队2","情圣","新木乃伊"]
# plt.xticks(range(len(_x)),_x,rotation=90) # 注意:rotation设置的是中心旋转,也就是以【x轴刻度】的中心为基点旋转一定的角度"""设置x轴刻度和y轴刻度字符"""
_y=["战狼2","速度与激情8","功夫瑜伽","西游伏妖篇","变形金刚5:最后的骑士","摔跤吧!爸爸","加勒比海盗5:死无对证","金刚:骷髅岛","极限特工:终极回归","生化危机6:终章","乘风破浪","神偷奶爸3","智取威虎山","大闹天竺","金刚狼3:殊死一战","蜘蛛侠:英雄归来","悟空传","银河护卫队2","情圣","新木乃伊"]
plt.yticks(range(len(_y)),_y)# 添加网格线
plt.grid(linestyle=":", # 线型color="#6495ED", # 颜色 CornflowerBlue 矢车菊的蓝色 #6495ED 100,149,237alpha=0.4, # 透明度
)plt.show()
10【matplotlib常用统计图】02绘制条形图相关推荐
- 数据分析 第三讲 matplotlib常用统计图
文章目录 数据分析第三讲 matplotlib常用统计图 1.绘制散点图 2.绘制条形图 3.绘制直方图 4.绘制饼图 5. 绘制3D立体图形 5.1 3D曲线 5.2 3D散点图 5.3 3D平面图 ...
- 数据科学库(HM)(Day2)——matplotlib常用统计图
绘制散点图 from matplotlib import pyplot as plt from matplotlib import font_manager plt.rcParams['font.sa ...
- 人工智能学习笔记03——matplotlib常用统计图
绘制散点图 1 假设通过爬虫,获取到西安2019年3月份和10月份每天白天的最高的气温,分别是列表a和列表b,那么此时如何寻找气温随时间变换的某种规律? a = [12,7,13,13,17,17,1 ...
- 数据分析笔记--matplotlib(五)绘制条形图
2017年内地电影票房前20的电影(列表a)和电影票房数据(列表b),那么如何更加直观的展示该数据? a = ["战狼2","速度与激情8","功夫瑜 ...
- Python数据分析 2.Matplotlib绘图—常用统计图
Python数据分析 2.Matplotlib绘图-常用统计图 1.绘制散点图 from matplotlib import pyplot as plt from matplotlib import ...
- 【数据分析与挖掘】数据分析学习及实践记录 | part 03-matplotlib常用统计图
开新坑啦!之前都是晚上七点以后开始学习,今天上午把matplotlib中文显示的问题解决,就开始刷课了.第三部分开启. 老规矩,先上图 01绘制散点图 开篇老师上手一个一周天气的练习. 我跟着标注的数 ...
- matplotlib绘制常用统计图
matplotlib的pyplot子模块提供了和Matlab类似的绘图API,方便用户快速绘制2D图表.在绘图过程中,调用 figure 创建一个绘图对象,并且使它成为当前的绘图对象. 各种图展示功能 ...
- Python-Matplotlib可视化(10)——一文详解3D统计图的绘制
Python-Matplotlib可视化(10)--一文详解3D统计图的绘制 前言 3D散点图 3D曲线图 3D标量场 绘制3D曲面 在3D坐标轴中绘制2D图形 3D柱形图 系列链接 前言 Matpl ...
- matplotlib 常用图形绘制与官方文档
matplotlib 常用图形绘制与官方文档 matplotlib.org Python库matplotlib 图形绘制 官方教程目录 matplotlib.pyplot matplotlib.pyp ...
最新文章
- cs嵌html5页面,在.cs c#.net中包含HTML页面
- 一张图带你看清2014年就业形势-管理专业排名第一,就业难
- 【剑指offer】面试题62:圆圈中最后剩下的数字(Java)
- 原生线程池这么强大,Tomcat 为何还需扩展线程池?
- 使用Python及Selenium自动发表文章
- Bootstrap表单控件的尺寸
- 效率源希捷硬盘远程维修案例-K9盘卡死引起的F级处理
- VC++6.0安装步骤
- AVL平衡树的插入例程
- java.lang unsupported classversion解决方法
- matlab2c使用c++实现matlab函数系列教程-unifstat函数
- h5侠客行服务器维护有更新什么,《侠客行》1月22日版本更新说明
- 使用AudioRecord录制pcm格式音频
- 16 张图解 | 淘宝 10年架构演进
- PredRNN++: Towards A Resolution of the Deep-in-Time Dilemma in Spatiotemporal Predictive Learning
- Java之OutOfMemoryError简单分析
- 一个FC游戏的下载站点
- java获取jira上的任务
- 最小二乘法拟合椭圆——MATLAB和Qt-C++实现
- Linux Power supply子系统分析