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

news2024/10/7 12:29:34

文章传送门

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 plt

x = [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 np

fig = 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.coloradmin.cn/o/1385289.html

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

相关文章

爬虫案例—爬取豆瓣电影最受欢迎的影评

爬虫案例—爬取豆瓣电影最受欢迎的影评 豆瓣影评网址:https://movie.douban.com/review/best/ 目标:爬取第一页的影评封面标题、评论内容、完整的评论内容 第一页页面截图如下: import requests from lxml import etree import re from bs…

前端开发必备:掌握正则表达式,轻松应对复杂的表单验证

前言 在前端开发中,经常需要处理 URL 地址、校验手机号合法性、提取域名等。正则表达式是一种常用的工具。通过使用正则表达式,我们可以对用户输入进行有效的验证,确保数据的合法性和完整性。本文将介绍一些常见的正则表达式,帮助…

【C#】当重复使用一段代码倒计时时,使用静态类和静态方法,实现简单的this扩展方法

欢迎来到《小5讲堂》 大家好,我是全栈小5。 这是《C#》序列文章,每篇文章将以博主理解的角度展开讲解, 特别是针对知识点的概念进行叙说,大部分文章将会对这些概念进行实际例子验证,以此达到加深对知识点的理解和掌握。…

控制网页的灰度显示

1.代码&#xff1a; 普通网页 <style>html {filter: grayscale(100%);}</style> 或是:webkit内核浏览器写法 <style>html {-webkit-filter: grayscale(100%)}</style> 2.说明&#xff1a; grayscale(amount) :进行灰度转换。 amount转换值的大小&…

C#编程-实现文件输入和输出操作

实现文件输入和输出操作 所有程序接受用户的输入、处理输入并且产生输出。所以,所有的编程语言都支持输入和输出操作。例如,您需要为教师开发程序以接受学生的结果信息。您的程序应该将信息保存在硬盘的Result.xls文件中。您可以在程序中使用文件输入和输出操作以接受来自教…

应急管理蓝皮书 |《应急预案数字化建设现状和发展建议》下篇

导读 《应急预案数字化建设现状和发展建议》&#xff1a;297-313页 《中国应急管理发展报告》系列蓝皮书由中央党校&#xff08;国家行政学院&#xff09;应急管理培训中心&#xff08;中欧应急管理学院&#xff09;联合社会科学文献出版社研创出版&#xff0c;本着“权威前沿…

MySQL面试题 | 08.精选MySQL面试题

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…

OpenGauss源码分析-SQL引擎

所讨论文件大多位于src\common\backend\parser文件夹下 总流程 start_xact_command()&#xff1a;开始一个事务。pg_parse_query()&#xff1a;对查询语句进行词法和语法分析&#xff0c;生成一个或者多个初始的语法分析树。进入foreach (parsetree_item, parsetree_list)循环…

11-适配器模式(Adapter)

意图 将一个类的接口转换成客户希望的另一个接口。Adapter模式使得原本由于接口不兼容而不能在一起工作的那些类可以一起工作。 适配器模式属于结构模式。 类适配器模式&#xff08;通过继承的方式实现适配器模式&#xff09; Adapter类&#xff0c;通过继承src类&#xff0…

逸学Docker【java工程师基础】1.认识docker并且安装

场景问题 在实际开发过程中我们有这样的场景问题 在开发阶段的环境配置到了其他人项目人员那里就不能运行了&#xff0c;尽管配置规格相同&#xff0c;但是在较多的不同的环境情况下还是可能会有错误。 开发&#xff1a;程序员&#xff1a;你那边可以运行了吗 测试&#xf…

线程安全2

文章目录 锁的可重入性死锁内存可见性引起的线程安全 锁的可重入性 直观来看这个代码不能运行 为啥没有出现阻塞&#xff1f; 当前由于是同一个线程&#xff0c;此时的锁对象&#xff0c;就知道了第二次加锁的线程&#xff0c;就是持有锁的线程&#xff0c;第二次操作&#xff…

一天吃透Java并发面试八股文

内容摘自我的学习网站&#xff1a;topjavaer.cn 分享50道Java并发高频面试题。 线程池 线程池&#xff1a;一个管理线程的池子。 为什么平时都是使用线程池创建线程&#xff0c;直接new一个线程不好吗&#xff1f; 嗯&#xff0c;手动创建线程有两个缺点 不受控风险频繁创…

【WPF.NET开发】WPF中的版式

本文内容 改进的文本质量和性能丰富的版式增强的国际文本支持增强的字体支持新的文本应用程序编程接口 (API) 本主题介绍 WPF 的主要版式功能。 这些功能包括改进的文本呈现质量和性能、OpenType 版式支持、增强的国际文本、增强的字体支持和新的文本应用程序编程接口 (API)。…

SpringMVC RESTful案例

文章目录 1、准备工作2、功能清单3、具体功能&#xff1a;访问首页a>配置view-controllerb>创建页面 4、具体功能&#xff1a;查询所有员工数据a>控制器方法b>创建employee_list.html 5、具体功能&#xff1a;删除a>创建处理delete请求方式的表单b>删除超链接…

多元化的App封装打包平台,解锁应用发布效率

在数字化时代&#xff0c;移动应用已成为连接用户与服务的重要桥梁。对于开发者而言&#xff0c;将应用从代码转化为用户可以直接下载安装的产品&#xff0c;这一过程的效率和质量至关重要。App封装打包平台的出现&#xff0c;为开发者提供了便捷的应用构建、测试和分发解决方案…

Robot Framework之python脚本调用

目录 目录结构 ​编辑 Python函数作为关键字 一、通过Import Library关键字在*** Test Cases ***中引用python脚本 ​编辑 二、通过Library关键字在*** Settings ***中引入python脚本 Python类作为测试库 一、通过Library关键字在*** Settings ***引入python脚本中的类 …

机器学习_7、KNN

数据采用&#xff1a;电离层数据 KNN完整的代码电离层数据资源-CSDN文库 代码 import os import csv import numpy as np from sklearn.model_selection import train_test_split from sklearn.neighbors import KNeighborsClassifier from sklearn.model_selection import …

DNS域名解析协议

文章目录 DNS域名解析协议一、DNS系统的作用1、DNS的定义2、DNS域名解析2.1 正向解析2.2 反向解析 3、DNS域名结构 二、DNS服务器类型1、主域名服务器2、从域名服务器3、缓存域名服务器4、权威dns服务器 三、DNS查询类型及原理1、查询方式1.1 递归查询1.2 迭代查询 2、DNS查询原…

墙地砖外形检测的技术方案-图像增强

基础理论 本例中使用漫射场光源&#xff0c;在采集图像的过程中&#xff0c;更容易可能会受环境中光源照射不足的可能性&#xff0c;导致采集的图像对比度不足&#xff0c;图像视觉效果较暗。可通过直方图均衡化或者直方图规定化。利用直方图规定化进行图像增强。 案例图片 如…

实例分割论文精读:Mask R-CNN

1.摘要 本文提出了一种概念简单、灵活、通用的实例分割方法&#xff0c;该方法在有效地检测图像中的物体同时&#xff0c;为每个物体实例生成一个实例分割模板&#xff0c;添加了一个分支&#xff0c;用于预测一个对象遮罩&#xff0c;与现有的分支并行&#xff0c;用于边界框…