【Python数据可视化】matplotlib之绘制三维图形:三维散点图、三维柱状图、三维曲面图

文章传送门

Python 数据可视化
matplotlib之绘制常用图形:折线图、柱状图(条形图)、饼图和直方图
matplotlib之设置坐标:添加坐标轴名字、设置坐标范围、设置主次刻度、坐标轴文字旋转并标出坐标值
matplotlib之增加图形内容:设置图例、设置中文标题、设置网格效果
matplotlib之设置子图:绘制子图、子图共享x轴坐标
matplotlib之绘制高级图形:散点图、热力图、等值线图、极坐标图
matplotlib之绘制三维图形:三维散点图、三维柱状图、三维曲面图

目录

  • 简述 / 前言
  • 1. 三维散点图
  • 2. 三维柱状图
  • 3. 三维曲面图

简述 / 前言

前面介绍了一些常用技巧、常见的图形(折线图、柱状图(条形图)、饼图和直方图)和高级的二维图形(散点图、热力图、等值线图),这篇分享一下如何绘制三维图形:三维散点图、三维柱状图、三维曲线图。

三维图形需要用到 mpl_toolkits.mplot3d 中的 Axes3D,也可以用前面介绍的二维方法创建三维图像,前提是要将子图的坐标轴改为三维坐标轴。


1. 三维散点图

关键方法:Axes3D().scatter(),注意需要创建 figure 对象。

一般用法:.scatter(x, y, z),各参数含义如下:

参数含义
xx轴的数据
yy轴的数据
zz轴的数据

示例:

import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D# 三门课程的成绩
x = [100, 98, 79, 68, 85]
y = [95, 99, 80, 60, 90]
z = [93, 90, 85, 70, 88]# 绘制三维散点图
fig = plt.figure()
ax = Axes3D(fig)
ax.scatter(x, y, z)# 添加坐标轴
plt.rcParams['font.sans-serif'] = ['FangSong']  # 设置中文
ax.set_xlabel('课程1')
ax.set_ylabel('课程2')
ax.set_zlabel('课程3')
plt.show()

输出:
请添加图片描述

整体结构和二维散点图差不多,具体的用法也很相似,只是多了一个z轴而已

2. 三维柱状图

关键参数:projection='3d',指定子图的坐标轴为三维坐标轴。

关键语句:matplotlib.pyplot.bar3d(x, y, z, dx, dy, dz)

一般会这么写:matplotlib.pyplot.bar3d(x, y, z=0, dx=1, dy=1, dz, zsort='average', shade=True, alpha=alpha, color=color, edgecolor=edgecolor, lw=lw, linestyle=linestyle),各参数含义如下:

属性含义
x, y, z定位点的坐标(输入的数据类型类似于数组)【z一般取0,表示柱状图的底都在平面 X O Y XOY XOY上】
dx, dy柱状图底面的长和宽【一般都取1
dz柱状图的高度
zsortz轴的排序方案
shade是否加上阴影(默认为:True)【如果为真,这会使条形的暗边变暗(相对于图的光源)。】
alpha透明度,取值范围:[0, 1],值越小越透明
color每个柱状图的颜色【颜色只能取一种
edgecolor边缘的颜色【颜色可以取几种,但是并不是每个柱状图的边缘颜色都不一样,只是在移动查看的时候,颜色会不断转换,建议只取一种颜色,或者不设置边缘颜色
lw边缘线的宽度
linestyle边缘线的类型

示例:

import matplotlib.pyplot as pltx = [1, 6, 3, 4, 5, 6, 3]     # x轴刻度
y = [1, 3, 3, 4, 5, 1, 2]       # y轴刻度
dz = [12, 20, 25, 10, 18, 5, 8]   # z轴刻度fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.set_title('三维柱状图')
ax.bar3d(x, y, z=0, dx=1, dy=1, dz=dz, shade=True, color='g', edgecolor='grey', lw=3, linestyle='--', alpha=0.5)
plt.rcParams['font.sans-serif'] = ['FangSong']  # 设置中文
ax.set_xlabel('x轴')
ax.set_ylabel('y轴')
ax.set_zlabel('z轴')
plt.show()

输出:
请添加图片描述

3. 三维曲面图

关键参数:projection='3d',指定子图的坐标轴为三维坐标轴。

关键方法:.plot_surface()

一般会这么写:.plot_surface(X, Y, Z, rstride=rstride, cstride=cstride, cmap=cmap),各参数含义如下:

参数含义
XX轴的位置序列
YY轴的位置序列
Z要绘制的曲线的函数
rstrideX轴方向上的条纹间隔
cstrideY轴方向上的条纹间隔
cmap指定填充风格,有内置颜色,也可以自定义颜色,内置的风格有:Accent, Accent_r, Blues, Blues_r, BrBG, BrBG_r, BuGn, BuGn_r, BuPu, BuPu_r, CMRmap, CMRmap_r, Dark2, Dark2_r, GnBu, GnBu_r, Greens, Greens_r, Greys, Greys_r, OrRd, OrRd_r, Oranges, Oranges_r, PRGn, PRGn_r, Paired, Paired_r, Pastel1, Pastel1_r, Pastel2, Pastel2_r, PiYG, PiYG_r, PuBu, PuBuGn, PuBuGn_r, PuBu_r, PuOr, PuOr_r, PuRd, PuRd_r, Purples, Purples_r, RdBu, RdBu_r, RdGy, RdGy_r, RdPu, RdPu_r, RdYlBu, RdYlBu_r, RdYlGn, RdYlGn_r, Reds, Reds_r, Set1, Set1_r, Set2, Set2_r, Set3, Set3_r, Spectral, Spectral_r, Wistia, Wistia_r, YlGn, YlGnBu, YlGnBu_r, YlGn_r, YlOrBr, YlOrBr_r, YlOrRd, YlOrRd_r, afmhot, afmhot_r, autumn, autumn_r, binary, binary_r, bone, bone_r, brg, brg_r, bwr, bwr_r, cividis, cividis_r, cool, cool_r, coolwarm, coolwarm_r, copper, copper_r, cubehelix, cubehelix_r, flag, flag_r, gist_earth, gist_earth_r, gist_gray, gist_gray_r, gist_heat, gist_heat_r, gist_ncar, gist_ncar_r, gist_rainbow, gist_rainbow_r, gist_stern, gist_stern_r, gist_yarg, gist_yarg_r, gnuplot, gnuplot2, gnuplot2_r, gnuplot_r, gray, gray_r, hot, hot_r, hsv, hsv_r, inferno, inferno_r, jet, jet_r, magma, magma_r, nipy_spectral, nipy_spectral_r, ocean, ocean_r, pink, pink_r, plasma, plasma_r, prism, prism_r, rainbow, rainbow_r, seismic, seismic_r, spring, spring_r, summer, summer_r, tab10, tab10_r, tab20, tab20_r, tab20b, tab20b_r, tab20c, tab20c_r, terrain, terrain_r, turbo, turbo_r, twilight, twilight_r, twilight_shifted, twilight_shifted_r, viridis, viridis_r, winter, winter_r

示例:

import matplotlib.pyplot as plt
import numpy as npfig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
x = np.arange(-11, 11, 0.1)
X, Y = np.meshgrid(x, x)
Z = X ** 2 + Y ** 2  # 定义待绘制的曲线
# 绘制三维曲线
ax.plot_surface(X, Y, Z, rstride=10, cstride=20, cmap='summer_r')
ax.set_xlabel('x轴', fontdict={'fontname': 'FangSong', 'fontsize': 16})
ax.set_ylabel('y轴', fontdict={'fontname': 'FangSong', 'fontsize': 16})
ax.set_zlabel('z轴', fontdict={'fontname': 'FangSong', 'fontsize': 16})
plt.show()

输出:
请添加图片描述

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

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

相关文章

精确掌控并发:滑动时间窗口算法在分布式环境下并发流量控制的设计与实现

这是《百图解码支付系统设计与实现》专栏系列文章中的第(15)篇,也是流量控制系列的第(2)篇。点击上方关注,深入了解支付系统的方方面面。 上一篇介绍了固定时间窗口算法在支付渠道限流的应用以及使用redis…

消息的发送与接收

消息的发送与接收 消息的发送与接收不仅仅是在于聊天功能的实现。其实还有很多种情况也算"消息的发送与接收"。而且我们还可以通过多种方法去实现。我们可以基于实际情况来选择。 WebSocket实现 node做后端。找了好多,前端页面总是用到了jQuery&#x…

lvgl简介

LVGL(Light and Versatile Graphics Library)是一个开源的图形用户界面库,旨在提供轻量级、可移植、灵活和易于使用的图形用户界面解决方案。 它适用于嵌入式系统,可以在不同的操作系统、微控制器和图形加速器上运行。LVGL的核心…

1.go安装及相关配置

目录 概述下载基本命令Go build环境设置 结束 概述 下载 官网速递 选择 1.20.x 一个是因为是次新版本,另一个,mac 系统是 10.13.6 ,1.20.x 是最后一个支持此版本的。 环境变量 GOROOT go的安装目录(将go安装到哪里 which go、cat /etc/p…

高并发IO底层原理

1 概述 IO底层原理是隐藏在Java编程知识之下的基础知识,是开发人员必须掌握的基本原理。本文从操作系统的底层原理入手,通过图文的方式为大家深入剖析高并发IO的底层原理,并介绍如何通过设置来让操作系统支持高并发。 2 IO读写的基本原理 为…

文件模块常用api

文件模块常用api 文件夹常用操作 文件夹操作 fs.mkdir fs.rmdir 需要是空目录 题目:递归删除目录* 串行/并行删除文件*

【电商API】DIY网络爬虫收集电商数据

DIY网络爬虫收集电商数据 网络爬虫是最常见和使用最广泛的数据收集方法。DIY网络爬虫确实需要一些编程知识,但整个过程比一开始看起来要简单得多。 当然,爬虫的有效性取决于许多因素,例如目标的难度、网站方的反爬虫措施等。如果将网络抓取用…

机器学习根据金标准标记数据-九五小庞

根据金标准标记数据是一种在机器学习和数据科学中常见的操作,主要用于评估分类模型的性能。其基本步骤如下: 收集数据:首先需要收集相关领域的原始数据,这些数据通常来自不同的来源和渠道。数据清洗和预处理:在这一步…

soft212期末

文章目录 安卓填空题选择题 C# 安卓 Dalvik中得到Dx工具会把部分class文件转换成dex文件。 如果希望在XML布局文件中调用颜色资源,可以使用color调用 Android程序入口的Activity是在AndroidManifest.xml文件中注册的 Android中查看应用程序日志的工具是LogCat Dal…

JavaScript面向对象之实践项目

1、cat项目 (1)需要修改的原代码 (2)修改要求 使用括号表示法将name属性的值存储在变量catName中。使用点表示法运行greeting()方法。将color属性值更新为白。重写greeting() 方法,使它的问候语为"孟买猫碳头对…

良心推荐!几款收藏的神级IDEA插件分享

本文已收录至Github,推荐阅读 👉 Java随想录 微信公众号:Java随想录 文章目录 CodeGlanceGsonFormatPOJO to JsonRainbow BracketsTranslationLombokMaven HelperAlibaba Java Code GuidelinesGenerateAllSetterMybatisXChinese (Simplified…

Tomcat10.X部署老版本axis2 webservice项目不生效

目录 一、使用场景 二、问题描述 三、原因排查 四、解决方案 一、使用场景 原来项目是OpenJDK8tomcat9构建,现在需要升级到OpenJDK17tomcat10的组合。原来的webservice项目打包成aar格式,通过axis2部署在tomcat上。 二、问题描述 在配置好jdk和to…

【软件测试学习笔记1】测试基础

1.软件测试的定义 软件的定义:控制计算机硬件工作的工具 软件的基本组成:页面客户端,代码服务器,数据服务器 软件产生的过程:需求产生(产品经理),需求文档,设计效果图…

NEAU_Python程序设计结课作业

1.身份证号合法性判别 【问题描述】我国身份证号码由数字与字母混合组成。早期身份证由15位数字构成。后来考虑到千年虫问题((15位的身份证号码只能为150c年1月1日到9年12月31日出生的人确号),所以又增加了18位身份证号码编号规则。最后—位(第18位)校验…

用二维码介绍产品详情,扫码查看图文并茂的宣传册

传统的产品宣传方式,往往以产品手册、宣传单等纸质物料为主,更新成本高昂,一旦修改内容,就必须重新印刷,而且不易携带和保存,影响宣传效果和客户体验。 为了避免上述问题,可以在草料上搭建产品…

【树莓派】网线远程连接电脑和树莓派,实现SSH连接

目录 1、硬件连接; 2、电脑端: 3、查找树莓派的IP地址 4、开启树莓派的SSH接口 5、putty 6、命令行 参考文章 通过网线连接笔记本与树莓派 开启SSH和VNC功能 无显示器安装树莓派 实现:打开putty输入树莓派地址使用ssh方式登陆&…

java小游戏——动漫美女拼图

1:继承 1.1 继承概述 首先,我们来说一下,什么是继承: 继承是面向对象三大特征之一(封装,继承和多态) 可以使得子类具有父类的属性和方法,还可以在子类中重新定义,追加属性和方法 也就是说&…

【办公技巧】ppt修改全部字体怎么改?

制作完PPT之后,想要更换ppt中的字体,有没有什么快捷的方法呢?今天分享两个方法,一键修改ppt文件字体。 方法一: 找到功能栏中的编辑选项卡,点击替换 – 替换字体,在里面选择我们想要替换的字体…

【DolphinScheduler】datax读取hive分区表时,空分区、分区无数据任务报错问题解决

问题背景: 最近在使用海豚调度DolphinScheduler的Datax组件时,遇到这么一个问题:之前给客户使用海豚做的离线数仓的分层搭建,一直都运行好好的,过了个元旦,这几天突然在数仓做任务时报错,具体报…

JUC之锁

乐观锁和悲观锁 悲观锁 当一个线程在操作资源的时候,会悲观的任务有其他的线程会来抢占该资源,因此会在操作资源前进行加锁,避免其他线程抢占。 Synchronized关键字和Lock实现类就是悲观锁。 显示的锁定资源后再对资源进行操作。 使用场景&…