python绘制3D条形图

news2024/11/16 11:49:02

文章目录

    • 数据导入
    • 三维条形图
    • bar3d

数据导入

尽管在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条形图的光源

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/798118.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

智能制造:开启工业新纪元

随着科技的不断发展和人工智能的日益成熟,智能制造正成为当今工业界的热门话题。智能制造是一种以先进技术为支撑,通过数字化、网络化、智能化手段来提升生产效率、优化生产流程的现代化制造模式。 在智能制造中,物联网、大数据、云计算、人工…

OR-Tools工具安装(Python-Vs code)-自用

安装(已安装python以及Vs code) pip安装 python -m pip install --user ortools安装完成示意如下: 验证安装 python -c "import ortools; print(ortools.__version__)"输出结果为版本号

【Spring框架】@Resource注入以及与@Autowired的区别

目录 使用Resource设置name的方式来重命名注入的对象区别 使用Resource设置name的方式来重命名注入的对象 package com;import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import org.spr…

Ansible自动化运维工具

Ansible是一个基于Python开发的配置管理和应用部署工具,现在也在自动化管理领域大放异彩。它融合了众多老牌运维工具的优点,Pubbet和Saltstack能实现的功能,Ansible基本上都可以实现。 Ansible能批量配置、部署、管理上千台主机。比如以前需要…

解读维达国际2023半年度财报:后续发力“高端、高利润、高质量”

随着国内直播电商市场的迅速发展,对于希望在国内市场取得成功的品牌来说,直播电商已经成为所有大众消费品牌的竞争关键。 以生活用纸品牌维达为例,截至2023年7月25日,据抖音平台直播动态显示,维达官方旗舰店今年上半年…

opencv-27 阈值处理 cv2.threshold()

怎么理解阈值处理? 阈值处理(Thresholding)是一种常用的图像处理技术,在机器学习和计算机视觉中经常被用于二值化图像或二分类任务。它基于设定一个阈值来将像素值进行分类,将像素值大于或小于阈值的部分分为两个不同的类别&…

geomesa-cassandra安装测试

环境:centos7、java8、cassandra3.0.29、geomesa-cassandra_2.12-3.5.2 配置Java环境: 安装配置cassandra: 下载cassandra: wget https://www.apache.org/dyn/closer.lua/cassandra/3.0.29/apache-cassandra-3.0.29-bin.tar.gz tar -xzf ap…

一文了解声音克隆软件的技术原理

声音克隆软件是一种可以对人声进行复制和模拟的软件。它的技术原理主要包括语音信号处理和合成声音的算法。 首先,声音克隆软件会通过麦克风或其他录音设备获取用户的原始语音信号。这个语音信号将被传输到计算机中,经过一系列的处理和分析。 在语音信号…

微信小程序自动化测试实战,支持录制回放、智能遍历

为了满足小程序性能、功能等方面的测试需求,微信团队上线 小程序云测服务,提供丰富的自动化测试能力。其中 智能化 Monkey 服务 凭借着零代码、低成本的优势吸引不少开发者使用。 在服务使用过程中,我们发现开发者有更多的进阶需求&#xff…

多个回路进行全电参量测量,实现基站内各回路用电能耗的集中管理-安科瑞黄安南

应用场景 可应用于基站的交直流配电箱及对基站内的动力设备进行数据采集和控制。 功能 1.对多个回路进行全电参量测量,实现基站内各回路用电能耗的集中管理; 2.丰富的DI/DO输入输出,NTC测温,温湿度测量等非电参量监测&#xff…

深入学习 redis - Stream、Geospatial、HyperLogLog、Bitmap、Bitfields 类型扩展

目录 前言 Stream geospatial HyperLogLog Bitmaps Bitfields 前言 redis 中最关键的五个数据类型 String、List、Hash、Set、Zset 应用最广泛,同时 redis 也推出了额外的 5 个数据类型,他们分别是针对特殊场景才进行的应用的. Ps:这几种…

HuggingGPT Solving AI Tasks with ChatGPT and its Friends in Hugging Face

总述 HuggingGPT 让LLM发挥向路由器一样的作用,让LLM来选择调用那个专业的模型来执行任务。HuggingGPT搭建LLM和专业AI模型的桥梁。Language is a generic interface for LLMs to connect AI models 四个阶段 Task Planning: 将复杂的任务分解。但是这里…

Python GUI设计 tkinter module

Python GUI设计 GUI 设计可以大大简化你的工作编代码最头疼的内容就是你不能以超快的速度获得你想要的结果 这是最头疼的尤其是你要调试的时候 tkinter module 中的属性与方法 创建窗口 root tkinter.Tk() root.title("GUI example") # 设置窗口标题 .pack pack方…

SOC FPGA之HPS模型设计(二)

根据SOC FPGA之HPS模型设计(一), Quartus工程经过全编译后会产生Handoff文件夹、SOPCINFO文件、SVD文件 二、生成Preloader镜像文件 通过信息交换文件Handoff文件生成Preloader,需要用到SOC EDS Preloader也被称为spl(Second Program Loader)或u-boot…

PLC-Recorder的高速采集有多快?0.5ms算快吗?看控制器能力了!

大家知道,PLC-Recorder有一个高速采集的功能,基于TCP连接或UDP报文,速度取决于发送端的能力。对于西门子PLC,能做到1-2ms的采集速度,但是,我在前面的文章里提到了0.5ms的高速采集,哪个控制器能这…

移动IP的原理

目的 使得移动主机在各网络之间漫游时,仍然能保持其原来的IP地址不变 工作步骤 代理发现与注册 主机A:主机A移动到外地网络后,通过“代理发现协议”,与外地代理建立联系,并从外地代理获得一个转交地址,…

YAML+PyYAML笔记 2 | YAML缩进、分离、注释简单使用

2 | YAML缩进、分离、注释简单使用 1 简介2 缩进3 分离4 多行文本4.1 折叠块4.2 字面块4.3 引用块 5 注释5.1 行内注释5.2 块注释5.3 完美注释示例 1 简介 YAML 不是一种标记语言,而是一种数据格式;使用缩进和分离来表示数据结构,不需要使用…

tauri在github上进行自动更新打包并发版过程,实战操作避坑

从网上找了很多很多的文章,结果还是入坑了,一个问题找了一天才解决: Error A public key has been found, but no private key. Make sure to set TAURI_PRIVATE_KEY environment variable. 596 ELIFECYCLE  Command failed with exit code…

Unbantu环境 Poetry下载安装,亲自测试过

一、下载安装 我使用pip来进行的安装,命令如下: pip install poetry通过上面步骤后,会在这个目录生产执行文件 /home/xxxx/./local/bin在这个目录下面,可以看到poetry文件。 成功后,需要配置环境变量 二、配置环…

Yolov8 引入ICCV 2023 | 南开大学提出LSKNet:遥感旋转目标检测新SOTA | 助力backbone

💡💡💡本文改进:Large Selective Kernel Network (LSKNet)通过一个空间选择机制来实现的,该机制对一连串的大 depth-wise 卷积核所处理的特征进行有效加权,然后在空间上将它们合并。这些核的权重是根据输入动态确定的,允许该模型自适应地使用不同的大核,并根据需要调…