Python实现绘制3D条形图的示例详解

 更新时间:2023年07月28日 08:40:40   作者:微小冷  
这篇文章主要为大家学习介绍了如何利用Python实现绘制3D条形图,文中的示例代码讲解详细,具有一定的学习价值,感兴趣的小伙伴可以了解一下

数据导入

尽管在matplotlib支持在一个坐标系中绘制多组条形图,效果如下

其中,蓝色表示中国,橘色表示美国,绿色表示欧盟。从这个图就可以非常直观地看出,三者自2018到2022年的GDP变化情况。但相比之下,通过增加轴坐标,可以让多组条形图分布在三维坐标中,从而更具表现力。

这里仍然以中美欧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", "EU", "USA")
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),
}

三维条形图

由于想在三维坐标轴中绘图,所以第一步是新建一个子坐标图,并指定projection=3d,然后在绘图时给定一个额外的y坐标,代码如下

import matplotlib.pyplot as plt
import numpy as np
ax = plt.subplot(projection='3d')
colors = ['r', 'b', 'g']
yticks = [2, 1, 0]
for i,key in enumerate(areas):
    ax.bar(years, GDPS[key], 
        zs=i, zdir='y', label=key, color=colors[i], alpha=0.8)
    plt.yticks([])
plt.legend()
plt.show()

其中,设置透明度为0.8,这样可以让图像在表现时更有层次感。通过设置label,对三个地区的颜色进行了标注,效果为

bar3d

上图虽然有了3D坐标轴,但其实每个数据条仍然是二维的,通过bar3d函数,可以绘制更加结实紧固的三维方块图,其绘图参数如下

bar3d(x, y, z, dx, dy, dz, color=None, zsort='average', shade=True, lightsource=None, *args, data=None, **kwargs)

其中,x,y,z是方块图的锚点坐标,dx, dy, dz是方块的长度、宽度和高度。换言之,其绘图逻辑是,先指定其绘图的起始位置,然后按照给定的长宽高绘制长方体。下面的代码就通过bar3d来绘制中美欧的GDP变化

ax = plt.subplot(projection='3d')
dx = dy = np.zeros(5)+0.5
x = years
z = np.zeros_like(x)
for i,key in enumerate(areas):
    y = z + i
    dz = GDPS[key]
    ax.bar3d(x,y,z,dx,dy,dz,
        color=colors[i], alpha=0.8, label=key)
​​​​​​​plt.yticks([0.5, 1.5, 2.5], areas)
plt.show()

这里对y轴坐标重新进行了映射,从而无需使用label也能清晰地看出每组数据所对应的地区,效果如下

bar3d函数中其他参数含义如下:

  • zsort z轴排序方案
  • shade 当为True时,会显示3D图的阴影效果
  • lightsource 3D条形图的光源

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

相关文章

  • Python TKinter如何自动关闭主窗口

    Python TKinter如何自动关闭主窗口

    这篇文章主要介绍了Python TKinter如何自动关闭主窗口,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-02-02
  • Python中torch.load()加载模型以及其map_location参数详解

    Python中torch.load()加载模型以及其map_location参数详解

    torch.load()作用用来加载torch.save()保存的模型文件,下面这篇文章主要给大家介绍了关于Python中torch.load()加载模型以及其map_location参数的相关资料,需要的朋友可以参考下
    2022-09-09
  • Python真题案例之最长回文子串 周期串详解

    Python真题案例之最长回文子串 周期串详解

    今天来记录一下字符串处理中常见到的回文子串与周期串问题。使用的语言是Python优雅的处理字符串是程序员不可或缺的技能,快来一起学习吧
    2022-03-03
  • Python数据可视化之Matplotlib初级使用指南

    Python数据可视化之Matplotlib初级使用指南

    Matplotlib是Python中最常用的数据可视化库之一,它提供了丰富的图表类型和灵活的自定义选项,能帮助我们以更直观的方式理解数据,本文将对Matplotlib的基本功能进行介绍,包括如何创建和自定义图表等
    2023-07-07
  • Pandas读取行列数据最全方法

    Pandas读取行列数据最全方法

    本文主要介绍了Pandas读取行列数据最全方法,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-08-08
  • Python实现一键改变raw格式照片风格

    Python实现一键改变raw格式照片风格

    这篇文章主要为大家详细介绍了如何基于Python实现一键改变raw格式照片风格效果,文中的示例代码讲解详细,具有一定的学习价值,需要的可以一起学习一下
    2023-05-05
  • 一些让Python代码简洁的实用技巧总结

    一些让Python代码简洁的实用技巧总结

    随着项目代码行数的增加,不可避免的遇到软件架构腐败的问题,所以如何写出简洁的代码至关重要,这篇文章主要给大家介绍了一些让Python代码简洁的实用技巧,需要的朋友可以参考下
    2021-08-08
  • PyQt5实现用户登录GUI界面及登录后跳转

    PyQt5实现用户登录GUI界面及登录后跳转

    PyQt5是强大的GUI工具之一,通过其可以实现优秀的桌面应用程序。本文主要介绍了PyQt5实现用户登录GUI界面及登录后跳转,具有一定的参考价值,感兴趣的可以了解一下
    2021-11-11
  • 基于Python-turtle库绘制路飞的草帽骷髅旗、美国队长的盾牌、高达的源码

    基于Python-turtle库绘制路飞的草帽骷髅旗、美国队长的盾牌、高达的源码

    这篇文章主要介绍了基于Python-turtle库绘制路飞的草帽骷髅旗、美国队长的盾牌、高达的源码,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-02-02
  • Python实现将DNA序列存储为tfr文件并读取流程介绍

    Python实现将DNA序列存储为tfr文件并读取流程介绍

    为什么要在实验过程中存储文件,因为有些算法的内容存在一些重复计算的步骤,这些步骤往往消耗很大一部分时间,在有大量参数的情况时,需要在多次不同参数的情况下重复试验,因此可以考虑将一些不涉及参数运算的部分结果存入文件中
    2022-09-09

最新评论