python绘制分组条形图的示例代码

 更新时间:2023年07月10日 11:07:05   作者:微小冷  
本文主要介绍了如何使用python绘制分组条形图,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

数据导入

我们经常会遇到对比多个统计量随时间变化的图像,比如想知道中国、美国以及欧盟最近几年GDP变化,如下表所示,单位是万亿美元。

中国美国欧盟
201813.8920.5315.98
201914.2821.3815.69
202014.6921.0615.37
202117.8223.3217.19
202217.9625.4616.64

首先,把这些数值写入python

import numpy as np
years = np.arange(2018, 2023)
areas = ("PRC", "USA", "EU")
GDPS = {
    'PRC': (13.89, 14.28, 14.69, 17.82, 17.96),
    'USA': (20.53, 21.38, 21.06, 23.32, 25.46),
    'EU': (15.98, 15.69, 15.37, 17.19, 16.64),
}

多组条形图

然后,调用bar画图,由于每个年份都要绘制中国、美国以及欧盟三个条形图,所以需要合理规划每个条形图占据的宽度。在bar中,默认每组条形图的x坐标均为整数,故而下面将每个数据条的宽度设为0.25,并调用bar_label为这些条形图添加标签,以区分中美欧三个地区的划分

import matplotlib.pyplot as plt
x = np.arange(len(years))
width = 0.25
n = 0
for area, gdp in GDPS.items():
    offset = width * n
    rects = plt.bar(x + offset, gdp, width, label=area)
    plt.bar_label(rects, padding=3)
    n += 1
plt.ylabel('GDP/$trilion')
plt.ylim(10, 28)
plt.xticks(x + width, years.astype(str))
plt.legend(loc='upper left')
plt.show()

其中,legend用于调控图例所在位置,upper left表示将图例放在图像的左上角。如果不想精心设置,则可设为best,那么matplotli将会自行挑选一个合适的位置放置图例。

效果如下

其中,蓝色表示中国,橘色表示美国,绿色表示欧盟。从这个图就可以非常直观地看出,三者自2018到2022年的GDP变化情况。

堆叠条形图

如果想更加直观地查看2018到2022年间,中、美、欧三个地区的GDP增长情况,那么比较好的方案是绘制堆叠条形图。

堆叠条形图的绘制逻辑是,先画一个数据条,然后在这个数据条之上,再画一个数据条,所以想看增长率,就要用2022年的GDP减去2018年的,

GDPs = {
    "2018": np.array([13.89, 20.53, 15.98]),
    "2022": np.array([17.96, 25.46, 16.64]),
}
GDPs['2022'] -= GDPs['2018']

然后设置一个条形图的底部,这样每次绘制条形图的时候,都以这个bottom为底,就可以起到堆叠的效果

bottom = np.zeros(3)
for lbl, gdp in GDPs.items():
    p = plt.bar(areas, gdp, label=lbl, bottom=bottom)
    plt.bar_label(p, label_type='center')
    bottom += gdp
plt.ylabel('GDP/$trilion')
plt.legend(loc="upper right")
plt.show()

结果如图所示

可见,这五年中国的GDP涨了4万亿美元,美国则接近5万亿,而欧盟则增长甚微,给人一种有人退欧的感觉。

到此这篇关于python绘制分组条形图的示例代码的文章就介绍到这了,更多相关python分组条形图内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python基础之元编程知识总结

    Python基础之元编程知识总结

    很多人不理解“元编程”是个什么东西,关于它也没有一个十分准确的定义.这篇文章要说的是Python里的元编程,实际上也不一定就真的符合“元编程”的定义.只不过我无法找到一个更准确的名字来代表这篇文章的主题,所以就借了这么一个名号,需要的朋友可以参考下
    2021-05-05
  • python实现飞行棋游戏

    python实现飞行棋游戏

    这篇文章主要为大家详细介绍了python实现飞行棋游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-02-02
  • Python 内置函数complex详解

    Python 内置函数complex详解

    这篇文章主要介绍了Python 内置函数complex详解的相关资料,需要的朋友可以参考下
    2016-10-10
  • Django使用Celery实现异步发送邮件

    Django使用Celery实现异步发送邮件

    这篇文章主要为大家详细介绍了Django如何使用Celery实现异步发送邮件的功能,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一下
    2023-04-04
  • Python使用Pandas库实现MySQL数据库的读写

    Python使用Pandas库实现MySQL数据库的读写

    这篇文章主要介绍了Python使用Pandas库实现MySQL数据库的读写 ,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-07-07
  • 使用Python实现对PDF文件进行密码保护

    使用Python实现对PDF文件进行密码保护

    这篇文章主要为大家详细了如何使用Python来实现PDF文件的密码保护,以确保只有授权的用户可以访问文档,文中的示例代码简洁易懂,有需要的小伙伴可以参考一下
    2024-01-01
  • Python实战项目用PyQt5制作漫画脸GUI界面

    Python实战项目用PyQt5制作漫画脸GUI界面

    PyQt5 是用来创建Python GUI应用程序的工具包。作为一个跨平台的工具包,PyQt可以在所有主流操作系统上运行,本文主要介绍了如何用PyQt5制作漫画脸的GUI界面
    2021-10-10
  • Python制作脚本帮女朋友抢购清空购物车

    Python制作脚本帮女朋友抢购清空购物车

    这篇文章主要介绍了Python制作的抢购清空购物车的脚本,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-08-08
  • Python 实现取矩阵的部分列,保存为一个新的矩阵方法

    Python 实现取矩阵的部分列,保存为一个新的矩阵方法

    今天小编就为大家分享一篇Python 实现取矩阵的部分列,保存为一个新的矩阵方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-11-11
  • pygame实现弹球游戏流程

    pygame实现弹球游戏流程

    这篇文章主要介绍了pygame实现弹球游戏流程,弹球游戏(Pinball Pro)是安卓手机上排名第一的弹球游戏,真实再现了一直以来最经典的弹珠台游戏的玩法
    2023-01-01

最新评论