案例

假设你获取到了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绘制条形图相关推荐

  1. 数据分析 第三讲 matplotlib常用统计图

    文章目录 数据分析第三讲 matplotlib常用统计图 1.绘制散点图 2.绘制条形图 3.绘制直方图 4.绘制饼图 5. 绘制3D立体图形 5.1 3D曲线 5.2 3D散点图 5.3 3D平面图 ...

  2. 数据科学库(HM)(Day2)——matplotlib常用统计图

    绘制散点图 from matplotlib import pyplot as plt from matplotlib import font_manager plt.rcParams['font.sa ...

  3. 人工智能学习笔记03——matplotlib常用统计图

    绘制散点图 1 假设通过爬虫,获取到西安2019年3月份和10月份每天白天的最高的气温,分别是列表a和列表b,那么此时如何寻找气温随时间变换的某种规律? a = [12,7,13,13,17,17,1 ...

  4. 数据分析笔记--matplotlib(五)绘制条形图

    2017年内地电影票房前20的电影(列表a)和电影票房数据(列表b),那么如何更加直观的展示该数据? a = ["战狼2","速度与激情8","功夫瑜 ...

  5. Python数据分析 2.Matplotlib绘图—常用统计图

    Python数据分析 2.Matplotlib绘图-常用统计图 1.绘制散点图 from matplotlib import pyplot as plt from matplotlib import ...

  6. 【数据分析与挖掘】数据分析学习及实践记录 | part 03-matplotlib常用统计图

    开新坑啦!之前都是晚上七点以后开始学习,今天上午把matplotlib中文显示的问题解决,就开始刷课了.第三部分开启. 老规矩,先上图 01绘制散点图 开篇老师上手一个一周天气的练习. 我跟着标注的数 ...

  7. matplotlib绘制常用统计图

    matplotlib的pyplot子模块提供了和Matlab类似的绘图API,方便用户快速绘制2D图表.在绘图过程中,调用 figure 创建一个绘图对象,并且使它成为当前的绘图对象. 各种图展示功能 ...

  8. Python-Matplotlib可视化(10)——一文详解3D统计图的绘制

    Python-Matplotlib可视化(10)--一文详解3D统计图的绘制 前言 3D散点图 3D曲线图 3D标量场 绘制3D曲面 在3D坐标轴中绘制2D图形 3D柱形图 系列链接 前言 Matpl ...

  9. matplotlib 常用图形绘制与官方文档

    matplotlib 常用图形绘制与官方文档 matplotlib.org Python库matplotlib 图形绘制 官方教程目录 matplotlib.pyplot matplotlib.pyp ...

最新文章

  1. cs嵌html5页面,在.cs c#.net中包含HTML页面
  2. 一张图带你看清2014年就业形势-管理专业排名第一,就业难
  3. 【剑指offer】面试题62:圆圈中最后剩下的数字(Java)
  4. 原生线程池这么强大,Tomcat 为何还需扩展线程池?
  5. 使用Python及Selenium自动发表文章
  6. Bootstrap表单控件的尺寸
  7. 效率源希捷硬盘远程维修案例-K9盘卡死引起的F级处理
  8. VC++6.0安装步骤
  9. AVL平衡树的插入例程
  10. java.lang unsupported classversion解决方法
  11. matlab2c使用c++实现matlab函数系列教程-unifstat函数
  12. h5侠客行服务器维护有更新什么,《侠客行》1月22日版本更新说明
  13. 使用AudioRecord录制pcm格式音频
  14. 16 张图解 | 淘宝 10年架构演进
  15. PredRNN++: Towards A Resolution of the Deep-in-Time Dilemma in Spatiotemporal Predictive Learning
  16. Java之OutOfMemoryError简单分析
  17. 一个FC游戏的下载站点
  18. java获取jira上的任务
  19. 最小二乘法拟合椭圆——MATLAB和Qt-C++实现
  20. Linux Power supply子系统分析

热门文章

  1. 关于SSD寿命问题的探讨
  2. 让CS的头像支持GIF动画
  3. Android安卓应用发布平台汇总
  4. 读取应用程序/类库配置文件(比如***.dll.config)的方法小结
  5. 搜狗音乐爬虫下载python
  6. Linux中top 实时监控系统进程状态
  7. 关于lvm扩容的⽅式
  8. 移植shellinabox到ARM嵌入式开发板
  9. 杂谈---2014的第一篇博客
  10. 计算机处理器份额,2020 年电脑处理器排行榜单出炉