python画图|3D bar进阶探索

前述学习过程只能怪,已经探究了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.xdnf.cn/news/1538652.html

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

相关文章

通信工程学习:什么是POS无源光分配器

POS:无源光分配器 POS(Passive Optical Splitter,无源光分配器)是无源光网络(Passive Optical Network, PON)中的一个重要组成部分,它位于光线路终端(OLT)和光网络单元&a…

基于图卷积网络的轻量化推荐模型(论文复现)

基于图卷积网络的轻量化推荐模型(论文复现) 本文所涉及所有资源均在传知代码平台可获取 概述 图卷积网络(Graph Convolution Network,GCN)已经广泛的应用于推荐系统,基于GCN的协同过滤算法(例如…

【路径规划】人工势场(APF)、涡旋APF、安全APF和动态窗口方法在航点跟踪问题的比较

摘要 本研究比较了几种路径规划算法在航路点跟踪中的性能,包括传统的人工势场算法(APF)、涡旋人工势场(VAPF)、安全人工势场(SAPF)和动态窗口方法(DWA)。实验结果表明&a…

PyCharm的使用

PyCharm的入门使用教程 下载和安装PyCharm: 首先,访问JetBrains官方网站(https://www.jetbrains.com/pycharm/)下载PyCharm的最新版本。根据您的操作系统选择合适的版本进行下载。 安装完成后,打开PyCharm。 创建新…

实战分享:我是如何挖到CSDN漏洞的?

文章目录 前言一、过程二、总结《Windows信息安全和网络攻防》——清华大学出版社 前言 CxxN是国内很出名的博客平台,用户量非常大,注册用户据说有1个亿?(官方写的)本次我发现的漏洞详情是可以通过用户的id直接获取用户完整的手机号&#xf…

如何创建和编辑抖音百科词条,不会的找我们代创建!

如何创建和编辑抖音百科词条,不会的找我们代创建! 如何创建抖音百科个人词条,个人抖音百科的创建 #抖音百科 #百科 #推广 做过百度百科的老板们注意了,等一下别划走。 2024 年品宣新风口出现了,抖音百科正在替代百度…

金言问卷:国外问卷调查可以做吗?

国外问卷调查可不可以做? 金言问卷告诉你,答案是肯定可以的。接下来就给你讲讲为什么是肯定的答案。 首先,为什么是肯定可以做呢?因为国外问卷调查可以产生收益是真实的,像我们客户昨天193美元1350人民币&#xff0c…

Flutter Android Package调用python

操作步骤 一、创建一个Flutter Package 使用以下指令创建一个Flutter Package flutter create --templateplugin --platformsandroid,ios -a java flutter_package_python 二、修改android/build.gradle文件 在buildscript——>dependencies中添加以下内容 //导入Chaqu…

MySQL面试题--连续三天登录(困难)

一、准备工作 drop table if exists author_tb; CREATE TABLE author_tb (author_id int(10) NOT NULL,author_level int(10) NOT NULL,sex char(10) NOT NULL ); INSERT INTO author_tb VALUES(101, 6, m),(102, 1, f),(103, 1, m),(104, 3, m),(105, 4, f),(106…

Matlab 的.m 文件批量转成py文件

在工作中碰到了一个问题,需要将原来用matlab gui做出来的程序改为python程序,因为涉及到很多文件,所以在网上搜了搜有没有直接能转化的库。参考了【Matlab】一键Matlab代码转python代码详细教程_matlab2python-CSDN博客 这位博主提到的matla…

ReKep——李飞飞团队提出的新一代机器人操作方法:基于视觉语言模型和关键点约束

前言 由于工厂、车厂的任务需求场景非常明确,加之自今年年初以来,我司在机器人这个方向的持续大力度投入(包括南京、长沙两地机器人开发团队的先后组建),使得近期我司七月接到了不少来自车厂/工厂的订单,比如柔性上料、物料分拣、…

自动泊车系统中的YOLOv8 pose关键点车位线检测

自动泊车系统中的YOLOv8关键点车位线检测技术解析 引言 随着智能驾驶技术的快速发展,自动泊车功能成为了现代汽车的重要组成部分。它不仅能够提高驾驶的安全性,还能在一定程度上解决城市停车难的问题。在自动泊车系统中,准确识别停车位的位置…

10年408考研真题-数据结构

23.[2010统考真题]若元素 a,b,c,d,e,f 依次进栈,允许进栈、退栈操作交替进行,但不允许连续3次进行退栈操作,不可能得到的出栈序列是(D)。 A.dcebfa B.cbdaef C.bcaefd D.afedcb 解析:直接看D选项&#xff0c…

风力发电厂智能化转型5G工业路由器物联网应用解决方案

在风力发电厂的智能化转型过程中,5G工业路由器作为数据传输的高速通道,更是连接风电设备、传感器与云端智能平台的桥梁。通过5G的高带宽和低延迟特性,工业路由器能够实时传输海量的风电厂数据,包括但不限于风速、风向、发电机温度…

opencv实战项目二十四:棋盘格相机内参标定

文章目录 前言一、简介:二、使用步骤2.1制作标定板2.2 拍摄不同角度的标定板2.3计算棋盘格角点并优化2.4计算相机参数 三、整体代码实现: 前言 在数字图像处理和计算机视觉领域,相机标定是一个至关重要的步骤。它为相机提供了一个准确的数学…

vue和thinkphp路由伪静态配置

vue路由伪静态配置: location / { try_files $uri $uri/ /index.html; } thinkphp 路由伪静态配置 location ~* (runtime|application)/{ return 403; } location / { if (!-e $request_filename){ rewrite ^(.*)$ /index.php?s$1 last; break; } }

CMA第三方软件测试报告获取指南

在当今竞争激烈的市场环境中,企业对于产品质量的重视程度不断提高。为了确保软件产品的性能和安全性,许多企业开始寻求专业的第三方测试服务来获取第三方软件测试报告,而有无CMA认证资质对于软件测试报告来说至关重要。 CMA认证是中国国家认…

极客天成NVFile并行文件存储加速多模态大模型训练

01 国内多模态大模型训练的存储系统应用现状 近年来,中国在人工智能领域,尤其是多模态大模型的研发和应用方面取得了显著进展。随着百度文心一言、阿里通义千问、讯飞星火等支持图文生成的国产大模型,以及抖音、快手等在视频生成领域的突破…

RK3568平台(基础篇)示波器的使用

一.示波器面板介绍 示波器的横轴表示的是时间,在横轴上有10个小格,每个小格的时间是200us。 示波器的纵轴表示的是电压,在纵轴上有8个小格,每个小格的电压表示1V。 以上是个方波,方波在纵轴上占5个小格,每个小格的电压是500mv,所以这个方波的电压为2500mv。 方波在横…

python毕业设计基于django+vue医院社区医疗挂号预约综合管理系统7918h-pycharm-flask

目录 技术栈和环境说明预期达到的目标具体实现截图系统设计Python技术介绍django框架介绍flask框架介绍解决的思路性能/安全/负载方面可行性分析论证python-flask核心代码部分展示python-django核心代码部分展示操作可行性技术路线感恩大学老师和同学详细视频演示源码获取 技术…