资讯专栏INFORMATION COLUMN

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

mozillazg / 487人阅读

摘要:例如绘制年内地电影票房前的电影和电影票房数据,如何对数据进行可视化分析呢无疑是进行条形图分析。具体方法很简单,只需要将竖条形图的改为即可。使用时需要根据实际情况进行斟酌,合理选取。

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

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

老规矩,上代码:

# coding =utf-8from matplotlib import pyplot as pltfrom 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-8from matplotlib import pyplot as pltfrom 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 pltfrom 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,否则会混叠,影响效果,达不到目标要求。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/124100.html

相关文章

  • Python数据分析:seaborn

    摘要:,绘制盒形图,同样指定对数据的分类。如果传入则画出的盒形图是横向的。绘制小提琴图,表示是否将两类数据分开绘制,如果为,则不分开绘制,默认为。数据集数据集名。计算置信区间时使用的引导迭代次数整数。 seaborn是python中的一个非常强大的数据可视化库,它集成了matplotlib,下图为seaborn的官网,如果遇到疑惑的地方可以到官网查看。http://seaborn.pydat...

    LeexMuller 评论0 收藏0
  • Python数据分析:seaborn

    摘要:,绘制盒形图,同样指定对数据的分类。如果传入则画出的盒形图是横向的。绘制小提琴图,表示是否将两类数据分开绘制,如果为,则不分开绘制,默认为。数据集数据集名。计算置信区间时使用的引导迭代次数整数。 seaborn是python中的一个非常强大的数据可视化库,它集成了matplotlib,下图为seaborn的官网,如果遇到疑惑的地方可以到官网查看。http://seaborn.pydat...

    superPershing 评论0 收藏0
  • 数据可视化Seaborn从零开始学习教程() 分类数据可视化篇

    摘要:分类数据散点图在分类数据的基础上展示定量数据的最简单函数就是。此外,小提琴内还显示了箱体四分位数和四分位距。该函数会用高度估计值对数据进行描述,而不是显示一个完整的条形,它只绘制点估计和置信区间。 作者:xiaoyu微信公众号:Python数据科学知乎:python数据分析师 Seaborn学习大纲 seaborn的学习内容主要包含以下几个部分: 风格管理 绘图风格设置 颜色风...

    CodeSheep 评论0 收藏0
  • ❤️【python入门项目】在 Python 中创建条形追赶动画(评论区送书)❤️

    动画是使可视化更具吸引力和用户吸引力的好方法。它帮助我们以有意义的方式展示数据可视化。Python 帮助我们使用现有的强大 Python 库创建动画可视化。Matplotlib是一个非常流行的数据可视化库,通常用于数据的图形表示以及使用内置函数的动画。 直接跳到末尾 去评论区领书 ? 在 Python 中创建条形图追赶动画(评论区送书) ? 方法一:使用 pause() 函数? 方法二:使用 F...

    h9911 评论0 收藏0
  • Python进阶Matplotlib库绘制方法介绍

      小编写这篇文章的主要目的,主要是来给大家对Python的一些相关的知识,其内容主要有Matplotlib库图绘制方法的一些介绍。关于其具体的内容,下面就给大家详细的做出一个解答。  中文字体设置:  #字体设置   plt.rcParams['font.sans-serif']=["SimHei"]   plt.rcParams["axes.uni...

    89542767 评论0 收藏0

发表评论

0条评论

阅读需要支付1元查看
<