python画图|3D bar进阶探索

news2024/9/20 9:27:02

前述学习过程只能怪,已经探究了3D直方图的基础教程,详见下述链接:

python画图|3D直方图基础教程-CSDN博客

实际上,基础文章直接进入了堆叠教程,相对来说基础的程度不够,因此有必要再次探索。

【1】官网教程

首先还是来到官网,学习官方的教程:

bar3d(x, y, z, dx, dy, dz) — Matplotlib 3.9.2 documentation

教程非常简洁,我们做一下解读。

【2】代码解读

首先是numpy和matplotlib的引入:

import matplotlib.pyplot as plt  #引入matplotlib模块画图
import numpy as np #引入numpy模块做数学计算

然后对图形风格做了指引,暂不作为解读重点:

plt.style.use('_mpl-gallery') #设置画图颜色等风格

然后定义了变量:

# Make data
x = [1, 1, 2, 2] #定义变量
y = [1, 2, 1, 2] #定义变量
z = [0, 0, 0, 0] #定义变量
dx = np.ones_like(x)*0.5 #dx的输出结果都是0.5,和x的维度一致
dy = np.ones_like(x)*0.5 #dy的输出结果都是0.5,和x的维度一致
dz = [2, 3, 1, 4] #dz的结果

这段代码相对简单,需要注意的是:

dx = np.ones_like( )的功能是:输出全是1的数组,数组的维度和like()括号中的数组一致。

dx = np.ones_like(x)输出全是1的数组,数组的维度和x的维度(1X4)一致为测试这个功能,输入以下代码后运行:

import matplotlib.pyplot as plt  #引入matplotlib模块画图
import numpy as np #引入numpy模块做数学计算

plt.style.use('_mpl-gallery') #设置画图颜色等风格

# Make data
x = [1, 1, 2, 2] #定义变量
y = [1, 2, 1, 2] #定义变量
z = [0, 0, 0, 0] #定义变量
dx = np.ones_like(x)*0.5
dy = np.ones_like(x)*0.5
dz = [2, 3, 1, 4]

print('np.ones_like(x)=\n',np.ones_like(x))

输出结果为:

np.ones_like(x)=
 [1 1 1 1]

再之后,就定义了要画3D直方图:

# Plot
fig, ax = plt.subplots(subplot_kw={"projection": "3d"}) #定义要画3D图
ax.bar3d(x, y, z, dx, dy, dz) #定义画3D直方图

 其中,ax.bar3d(x, y, z, dx, dy, dz)函数,(x, y, z,)代表了需要绘制的3个坐标,(dx, dy, dz)代表了每个直方图的长度、宽度和高度。

最后设置了坐标轴和进行图形输出:

ax.set(xticklabels=[],
       yticklabels=[],
       zticklabels=[])  #设置坐标轴

plt.show() #输出图形

输出结果为:

图1

【3】修改代码

【3.1】显示坐标轴刻度

图1虽然画出了3D直方图,但坐标轴没有刻度尺寸。因此尝试修改坐标轴属性代码,使坐标轴显示刻度尺寸。

将ax.set部分拆开,写成下述形式:

ax.set_xticklabels=([])  #设置坐标轴
ax.set_yticklabels=([])
ax.set_zticklabels=([])  #设置坐标轴

此时的输出结果为:

图2

由图2可见,输出结果显示了坐标轴刻度标签。

【3.2】显示坐标轴标签

图2虽然显示了坐标轴刻度尺寸,但没有显示各个轴的名称,因此有必要继续增加代码,显示轴标签:

ax.set_xlabel("x", color="g", fontsize=20) #设置x轴标签
ax.set_ylabel("y", color="g", fontsize=20) #设置y轴标签
ax.set_zlabel("z", color="g", fontsize=20) #设置z轴标签

plt.show() #输出图形

此时的输出结果为:

图3

图3显示了坐标轴标签。

【4】改写代码

 前述图形对3D直方图做了一些完善,但实际上可修改的地方还很多。由于明显的修改将会显著区别于官网图形,因此要重新开一个章节。

首先,将最先约束画图风格的代码改为注释:

#plt.style.use('_mpl-gallery') #设置画图颜色等风格

然后,给3dbar设置颜色:

ax.bar3d(x, y, z, dx, dy, dz,color='y',alpha=0.58) #定义画3D直方图

这里的 color='y'表示图形为黄色;alpha=0.58表示不透明度,alpha越大越不透明,1为完全不透明。

再然后把变量做修改,使其尽可能有区别:

x = [1, 1, 2, 2] #定义变量
y = [1, 2, 1, 2] #定义变量
z = [3,5,6,5] #定义变量
dx = np.ones_like(x)*0.5 #dx的输出结果都是0.5,和x的维度一致
dy = np.ones_like(x)*0.5 #dy的输出结果都是0.5,和x的维度一致
dz = [1,2,3,4] #dz的结果

再给图形加一个名称:

ax.set_title('3Dbar')

此时的输出图形为:

图4

由图4可以看到不同的方块似乎起始高度不一样,因此尝试改变试图角度:

图5

此时非常清晰,方块的起始高度是z = [3,5,6,5],然后方块的具体高度是dz = [1,2,3,4] 。

至此的完整代码为:

import matplotlib.pyplot as plt  #引入matplotlib模块画图
import numpy as np #引入numpy模块做数学计算
from scipy.ndimage import label
from sympy.abc import alpha

#plt.style.use('_mpl-gallery') #设置画图颜色等风格

# Make data
x = [1, 1, 2, 2] #定义变量
y = [1, 2, 1, 2] #定义变量
z = [3,5,6,5] #定义变量
dx = np.ones_like(x)*0.5 #dx的输出结果都是0.5,和x的维度一致
dy = np.ones_like(x)*0.5 #dy的输出结果都是0.5,和x的维度一致
dz = [1,2,3,4] #dz的结果

# Plot
fig, ax = plt.subplots(subplot_kw={"projection": "3d"}) #定义要画3D图
ax.bar3d(x, y, z, dx, dy, dz,color='y',alpha=0.58) #定义画3D直方图

#ax.set(xticklabels=[],
#      yticklabels=[],
#      zticklabels=[]
#      )
ax.set_xticklabels=([])  #设置坐标轴
ax.set_yticklabels=([])
ax.set_zticklabels=([])  #设置坐标轴
ax.set_xlabel("x", color="g", fontsize=20) #设置x轴标签
ax.set_ylabel("y", color="g", fontsize=20) #设置y轴标签
ax.set_zlabel("z", color="g", fontsize=20) #设置z轴标签
ax.set_title('3Dbar')
plt.show() #输出图形

【5】总结

学习了3D直方图的绘制教程,显示了坐标轴刻度标签和名称标签,增加了图名,修改了方块颜色。

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

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

相关文章

spug项目实现代码本地启动步骤

一、spug代码仓库地址: spug: 开源运维平台:面向中小型企业设计的无 Agent的自动化运维平台,整合了主机管理、主机批量执行、主机在线终端、文件在线上传下载、应用发布、任务计划、配置中心、监控、报警等一系列功能。 - Gitee.com 注意:如…

【制作100个unity游戏之32】unity开发属于自己的一个2d/3d桌面宠物,可以实时计算已经获取的工资

最终效果 文章目录 最终效果一、实现Windows消息弹窗二、将窗口扩展到工作区三、穿透能点击到其他区域四、模型交互1、我们可以新增ObjectDrag 代码控制人物拖拖动2、实现模型交互五、最终代码六、其他七、游玩地址使用Live2D实现桌宠七、源码参考完结一、实现Windows消息弹窗 …

jetson nano开发板安装todesk远程乌班图aarch版本

打开todesk官网,并打开Linux系统的一栏:ToDesk远程桌面软件-免费安全流畅的远程连接电脑手机 我这里选择deb安装包,然后安装依赖 sudo apt-get install libappindicator3-1 由于我下载上传到了根目录,所以直接在终端运行安装命令…

Golang | Leetcode Golang题解之第415题字符串相加

题目: 题解: func addStrings(num1 string, num2 string) string {add : 0ans : ""for i, j : len(num1) - 1, len(num2) - 1; i > 0 || j > 0 || add ! 0; i, j i - 1, j - 1 {var x, y intif i > 0 {x int(num1[i] - 0)}if j &g…

nonlocal本质讲解(前篇)——从滤波到Nonlocal均值滤波

线性滤波 → \rightarrow →高斯滤波 → \rightarrow →高斯滤波 → \rightarrow →双边滤波 → \rightarrow →Nonlocal均值滤波 平均 高斯 双边 Nonlocal 目录 线性滤波高斯滤波双边滤波Nonlocal均值滤波 滤波最初是频域的概念,由于频域乘积对应空域卷积&am…

Qwen2-VL环境搭建推理测试

引子 2024年8月30号,阿里推出Qwen2-VL,开源了2B/7B模型,处理任意分辨率图像无需分割成块。之前写了一篇Qwen-VL的博客,感兴趣的童鞋请移步(Qwen-VL环境搭建&推理测试-CSDN博客),这么小的模…

Spring Cloud Alibaba-(1)搭建项目环境

1.Spring Cloud Alibaba(官网:https://sca.aliyun.com/) Spring Cloud Alibaba 是阿里巴巴结合自身丰富的微服务实践而推出的微服务开发的一站式解决方案,是 Spring Cloud 第二代实现的主要组成部分。吸收了 Spring Cloud Netflix…

一键文本提示实现图像对象高质量剪切与透明背景生成

按照提示词裁剪 按照边框裁剪 要实现您描述的功能,即通过一个文本提示就能自动从图片中切割出指定的对象并生成一个带有透明背景的新图像,这需要一个结合了先进的计算机视觉技术和自然语言处理能力的系统。这样的系统可以理解输入的文本指令,并将其转化为对图像内容的精确分…

深入探究HTTP网络协议栈:互联网通信的基石

在我们日常使用互联网的过程中,HTTP(HyperText Transfer Protocol,超文本传输协议)扮演着至关重要的角色。无论是浏览网页、下载文件,还是进行在线购物,HTTP协议都在背后默默地支持着这些操作。今天&#x…

【隐私计算篇】中国剩余定理解释以及Paillier解密加速应用

1. 背景介绍 本篇主要关注中国剩余定理的原理以及在paillier同态加密系统中的应用。在很多工作中,都可以看到中国剩余定理的影子,特别是同态加密提升计算效率的优化工作中,将paillier与中国剩余定理进行结合,能够实现在加密状态下…

[产品管理-25]:NPDP新产品开发 - 23 - 产品创新中的市场调研 - 定量市场调研的常见工具

目录 前言: 一、问卷调查 二、消费者测评组 三、概念测试与概念分类 概念测试 概念分类 四、感官检验 1、定义与特点 2、基本方法 3、应用领域 4、优势与局限性 五、眼动追踪 1、技术原理 2、应用领域 3、技术优势 4、市场现状与发展趋势 5、结论 …

彩蛋岛 销冠大模型案例

彩蛋岛 销冠大模型案例 任务: https://kkgithub.com/InternLM/Tutorial/tree/camp3/docs/EasterEgg/StreamerSales 视频 https://www.bilibili.com/video/BV1f1421b7Du/?vd_source4ffecd6d839338c9390829e56a43ca8d 项目git地址: https://kkgithu…

设计模式-结构型-11-代理模式

文章目录 1. 基本介绍2. 静态代理2.1 基本介绍UML 类图 2.2 应用实例定义接口目标对象代理对象调用代理 2.3 静态代理优缺点 3. 动态代理3.1 基本介绍3.2 JDK 中生成代理对象的 API参数说明UML类图 3.3 应用实例定义接口目标对象代理工厂调用代理 4. Cglib 代理4.1 基本介绍4.2…

2011-2022年数字金融与企业ESG表现:效应、机制与“漂绿”检验(内含原始数据+处理代码)

2011-2022年数字金融与企业ESG表现:效应、机制与“漂绿”检验(内含原始数据处理代码) 1、时间:2011-2022年 2、来源:上市公司年报、华证ESG、北大数字普惠金融 3、指标:年份、股票代码、股票简称、行业名…

使用Maven创建一个Java项目并在repository中使用

JDK环境:1.8.0_371 Maven环境 :Apache Maven 3.6.3 配置完成jdk和mvn后,进入到指定文件夹下执行如下语句: mvn archetype:generate -DgroupIdtop.chengrongyu -DartifactIdCyberSpace -DarchetypeArtifactIdmaven-archetype-quic…

Matlab Delany-Bazley和Miki模型预测多孔材料吸声性能

Delany-Bazley模型和Miki模型是常用于预测多孔材料吸声性能的两种模型。Delany-Bazley模型是一种经验模型,用于描述多孔材料的声学特性,特别是复杂多孔材料如泡沫材料。该模型基于材料的几何参数(如孔隙率、孔隙形状等)来预测材料…

Meta-Learning数学原理

文章目录 什么是元学习元学习的目标元学习的类型数学推导1. 传统机器学习的数学表述2. 元学习的基本思想3. MAML 算法推导3.1 元任务设置3.2 内层优化:任务级别学习3.3 外层优化:元级别学习3.4 元梯度计算3.5 最终更新规则 4. 算法合并5. 理解 MAML 的优…

Paper Digest|OpenSPG 超大规模知识仓储 KGFabric 论文解读

本文作者:祝锦烨,蚂蚁集团开发工程师,主要研究方向是图谱存储与计算。过去一年在团队的主要工作是蚂蚁知识图谱平台和 KGFabric 相关研发,研究成果收录于 VLDB24。 2024 年 8 月 26 日,数据管理与数据库领域顶级国际会…

[数据集][目标检测]红外微小目标无人机直升机飞机飞鸟检测数据集VOC+YOLO格式7559张4类别

数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):7559 标注数量(xml文件个数):7559 标注数量(txt文件个数):7559 标注…

Hikvision综合安防管理平台isecure center文件读取深度利用

前言 远离一线很久了,很难有实战的机会。碰到Hikvision的漏洞,市面上的很多文章又很模糊,自己摸全点做个详细记录。 参考文章,向佬学习。本次测试为内部授权测试,已脱敏。https://mp.weixin.qq.com/s/zvo195UQvWwTppm…