【01x01】Axes3D 对象创建方法一:Axes3D(fig)

在 Matplotlib 1.0.0 版本中,绘制 3D 图需要先导入 Axes3D 包,获取 figure 画布对象 fig 后,通过 Axes3D(fig) 方法来创建 Axes3D 对象,具体方法如下:import numpy as np

import matplotlib.pyplot as plt

from mpl_toolkits.mplot3d import Axes3D

# 获取 figure 画布并创建 Axes3D 对象

fig = plt.figure()

ax = Axes3D(fig)

# 数据坐标

z = np.linspace(0, 15, 1000)

x = np.sin(z)

y = np.cos(z)

# 绘制线性图

ax.plot(x, y, z)

plt.show()

【01x02】Axes3D 对象创建方法二:add_subplot

在 Matplotlib 3.2.0 版本中,绘制 3D 图可以通过创建子图,然后指定 projection 参数 为 3d 即可,返回的 ax 为 Axes3D 对象,以下两种方法均可:import numpy as np

import matplotlib.pyplot as plt

# 获取 figure 画布并通过子图创建 Axes3D 对象

fig = plt.figure()

ax = fig.add_subplot(111, projection='3d')

# 数据坐标

z = np.linspace(0, 15, 1000)

x = np.sin(z)

y = np.cos(z)

# 绘制线性图

ax.plot(x, y, z)

plt.show()import numpy as np

import matplotlib.pyplot as plt

# 通过子图创建 Axes3D 对象

ax = plt.subplot(111, projection='3d')

# 数据坐标

z = np.linspace(0, 15, 1000)

x = np.sin(z)

y = np.cos(z)

# 绘制线性图

ax.plot(x, y, z)

plt.show()

【01x03】Axes3D 对象创建方法三:gca

除了以上两种方法以外,还可以先获取画布对象 fig,再通过 fig.gca() 方法获取当前绘图区(gca = Get Current Axes),然后指定 projection 参数 为 3d 即可,返回的 ax 为 Axes3D 对象。import numpy as np

import matplotlib.pyplot as plt

# 依次获取画布和绘图区并创建 Axes3D 对象

fig = plt.figure()

ax = fig.gca(projection='3d')

# 数据坐标

z = np.linspace(0, 15, 1000)

x = np.sin(z)

y = np.cos(z)

# 绘制线性图

ax.plot(x, y, z)

plt.show()

以上三种方法运行结果均为下图:

【02x00】cmap 与 colorbar

默认情况下,散点图、线性图、曲面图等将以纯色着色,但可以通过提供 cmap 参数支持颜色映射。cmap 参数用于设置一些特殊的颜色组合,如渐变色等。

如果使用了 cmap 参数,则可以使用 pyplot.colorbar() 函数来绘制一个色条,即颜色对照条。

基本语法:matplotlib.pyplot.colorbar([mappable=None, cax=None, ax=None, **kw])

部分参数解释如下表,其他参数,如长度,宽度等请参考官方文档。参数描述

mappable要设置色条的图像对象,该参数对于 Figure.colorbar 方法是必需的,但对于 pyplot.colorbar 函数是可选的

cax可选项,要绘制色条的轴

ax可选项,设置色条的显示位置,通常在一个画布上有多个子图时使用

**kw可选项,其他关键字参数,参考官方文档

【03x00】3D 线性图:Axes3D.plot

基本方法:Axes3D.plot(xs, ys[, zs, zdir='z', *args, **kwargs])参数描述

xs一维数组,点的 x 轴坐标

ys一维数组,点的 y 轴坐标

zs一维数组,可选项,点的 z 轴坐标

zdir可选项,在 3D 轴上绘制 2D 数据时,数据必须以 xs,ys 的形式传递

,若此时将 zdir 设置为 ‘y’,数据将会被绘制到 x-z 轴平面上,默认为 ‘z’

**kwargs其他关键字参数,可选项,可参见 matplotlib.axes.Axes.plotimport numpy as np

import matplotlib.pyplot as plt

# 设置中文显示

plt.rcParams['font.sans-serif'] = ['Microsoft YaHei']

# 依次获取画布和绘图区并创建 Axes3D 对象

fig = plt.figure()

ax = fig.gca(projection='3d')

# 第一条3D线性图数据

theta = np.linspace(-4 * np.pi, 4 * np.pi, 100)

z1 = np.linspace(-2, 2, 100)

r = z1**2 + 1

x1 = r * np.sin(theta)

y1 = r * np.cos(theta)

# 第二条3D线性图数据

z2 = np.linspace(-3, 3, 100)

x2 = np.sin(z2)

y2 = np.cos(z2)

# 绘制3D线性图

ax.plot(x1, y1, z1, color='b', label='3D 线性图一')

ax.plot(x2, y2, z2, color='r', label='3D 线性图二')

# 设置标题、轴标签、图例,也可以直接使用 plt.title、plt.xlabel、plt.legend...

ax.set_title('绘制 3D 线性图示例', pad=15, fontsize='12')

ax.set_xlabel('x 轴', color='r', fontsize='12')

ax.set_ylabel('y 轴', color='g', fontsize='12')

ax.set_zlabel('z 轴', color='b', fontsize='12')

ax.legend()

plt.show()

【04x00】3D 散点图:Axes3D.scatter

基本方法:Axes3D.scatter(xs, ys[, zs=0, zdir='z', s=20, c=None, depthshade=True, *args, **kwargs])参数描述

xs一维数组,点的 x 轴坐标

ys一维数组,点的 y 轴坐标

zs一维数组,可选项,点的 z 轴坐标

zdir可选项,在 3D 轴上绘制 2D 数据时,数据必须以 xs,ys 的形式传递

若此时将 zdir 设置为 ‘y’,数据将会被绘制到 x-z 轴平面上,默认为 ‘z’,

s标量或数组类型,可选项,标记的大小,默认 20

c标记的颜色,可选项,可以是单个颜色或者一个颜色列表

支持英文颜色名称及其简写、十六进制颜色码等,更多颜色示例参见官网Color Demo

depthshadebool 值,可选项,默认 True,是否为散点标记着色以提供深度外观

**kwargs其他关键字参数,可选项,可参见 scatterimport numpy as np

import matplotlib.pyplot as plt

plt.rcParams['font.sans-serif'] = ['Microsoft YaHei']

# 依次获取画布和绘图区并创建 Axes3D 对象

fig = plt.figure()

ax = fig.gca(projection='3d')

n = 100

def randrange(n, vmin, vmax):

return (vmax - vmin)*np.random.rand(n) + vmin

'''

定义绘制 n 个随机点,设置每一组数据点的样式和范围

x轴数据位于[23,32]区间,y轴数据位于[0,100]区间,z轴数据位于[zlow,zhigh]区间

'''

for m, zlow, zhigh in [('o', -50, -25), ('^', -30, -5)]:

xs = randrange(n, 23, 32)

ys = randrange(n, 0, 100)

zs = randrange(n, zlow, zhigh)

ax.scatter(xs, ys, zs, marker=m)

# 设置标题、轴标签、图例,也可以直接使用 plt.title、plt.xlabel...

ax.set_title('绘制 3D 散点图示例', pad=15, fontsize='12')

ax.set_xlabel('x 轴', color='b')

ax.set_ylabel('y 轴', color='b')

ax.set_zlabel('z 轴', color='b')

plt.show()

【05x00】3D 线框图:Axes3D.plot_wireframe

基本方法:Axes3D.plot_wireframe(X, Y, Z[, *args, **kwargs])参数描述

X二维数组,x 轴数据

Y二维数组,y 轴数据

Z二维数组,z 轴数据

**kwargs其他关键字参数,可选项,如线条样式颜色等,可参见Line3DCollectionimport numpy as np

import matplotlib.pyplot as plt

plt.rcParams['font.sans-serif'] = ['Microsoft YaHei']

# 获取 figure 画布并通过子图创建 Axes3D 对象

fig = plt.figure()

ax = fig.add_subplot(111, projection='3d')

# 定义Z轴坐标的生成方法

def f(m, n):

return np.sin(np.sqrt(m ** 2 + n ** 2))

# 设置3D线框图数据

x = np.linspace(-6, 6, 30)

y = np.linspace(-6, 6, 30)

# 生成网格点坐标矩阵,该方法在系列文章八中有具体介绍

X, Y = np.meshgrid(x, y)

Z = f(X, Y)

# 绘制3D线框图

ax.plot_wireframe(X, Y, Z, color='c')

# 设置标题、轴标签、图例,也可以直接使用 plt.title、plt.xlabel...

ax.set_title('绘制 3D 线框图示例', pad=15, fontsize='12')

ax.set_xlabel('x 轴')

ax.set_ylabel('y 轴')

ax.set_zlabel('z 轴')

plt.show()

python绘图3d_超好看的3D绘图方式,Python厉害了!相关推荐

  1. python 3d绘图 拖动_在python中以交互方式旋转3D绘图 - matplotlib

    我想知道如何以this视频中描述的方式交互式旋转3D绘图(如果您从上方或下方或从右侧或左侧决定).我可以在spyder或jupyter Notebook中生成3D绘图,但之后它仍然是静态的,我无法与它 ...

  2. python二元函数图像在线绘制_“绘图,让科学生动起来”:Python-matplotlib绘图(多元函数拟合-3D绘图专题)...

    作者简介:85后一名分析化学工作者及科学爱好者,深爱着北京的老北京人,爱好运动,科学,旅行,个人微信公众号<科学是什么东东>,欢迎关注! 搭建python-matplotlib绘图平台的四 ...

  3. python 3d绘图 范围_python – 在3D绘图中绘制所有三个轴上的分布轮廓

    我在三维空间中有一堆点,并估计了这些点上的一些分布(也在3D空间中;使用 kernel density estimation虽然这与这个问题无关).我想将该分布的投影绘制为所有三个轴(x,y和z)上的 ...

  4. Matplotlib 3D绘图

    20210318 - 利用matplotlib进行3D画图可以实现对三维数据的可视化,而使用3D绘图稍有不同,下面进行具体的描述,本篇文章主要参考<Python三维绘图–Matplotlib&g ...

  5. python学什么方向就业好_学习python就业方向都有哪些?

    谢邀 我在学习的过程中,深深的觉得对于成人或者进入职场的人来说,学习一门新的知识,目的不在于积累,而在于解决问题. 所以这就要求我想明白3个问题: 1).学习python,要解决什么问题? 2).要学 ...

  6. python高阶3D绘图---pyvista模块,mayavi模块,pyopengl模块,MoviePy模块基础使用

    目录 一.python三维绘图 二.python动画生成 三.项目文件: 一.python三维绘图 ​ ~~~~~~~~         python借助于其编写简单,三方库丰富的特点,可以极为方便的 ...

  7. 如何用Python中的3D绘图命令,让你的数据更高级

    图是最直观观察到数据之间的内部关系以及规律的,比如在下面的几张动图中,使用matplotlib中的三维显示命令,使得我们可以对于logistic回归网络的性能与相关参数有了更好的理解. 下面的动图显示 ...

  8. mlab:用于3D绘图的Python脚本

    章节摘要 本节介绍了mlab API,用于将Mayavi用作脚本或交互式会话中的简单绘图.这是对使用Python在Matlab或IDL中进行3D绘图感兴趣的人们的主要切入点.如果您对mlab中公开的所 ...

  9. Python可视化——3D绘图解决方案pyecharts、matplotlib、openpyxl

    Python可视化--3D绘图解决方案pyecharts.matplotlib.openpyxl 1. pyecharts 2. matplotlib 3. openpyxl 这篇博客将介绍pytho ...

  10. python 3d绘图库_python – 用于科学3d绘图的Mayavi的替代品

    在没有令人满意的第一个答案和无法解释的downvote之后编辑: 我需要绘制一个在3D网格中构造的标量字段,如下所示: import numpy as np from mayavi import ml ...

最新文章

  1. AI创业周报:元宇宙时代来临!环球墨非风头正盛,53岁女博士领现象级芯片公司获数亿元融资...
  2. rs485数据线接反_再拆一个RS232-RS485通信接口转换器
  3. MVC模型构建管理系统
  4. 为安装有系统及应用的服务器更换硬盘方法一例
  5. 这些基因的名字太有才了,研究一下都可以发10分文章
  6. UEditor DIY笔记
  7. 构建自己的PHP框架(MVC)
  8. python从入门到放弃-学Python方法用错,直接从入门到放弃!
  9. mariadb配置主从同步遇到的问题
  10. 【物流选址】基于matlab节约算法求解考虑碳排放及带时间窗的物流选址问题【含Matlab源码 1589期】
  11. mysql常用的备份命令有哪些_Mysql常用命令及sql代码整理 非常实用值得收藏 - 文中之舞...
  12. 在WSUS 3.0的环境中,部分客户机没有向WSUS服务器更新状态,该如何解决?
  13. javascript视频教程下载
  14. ad7705c语言程序,TM7705低成本16位高精度ADC方案 附技术手册和C语言代码
  15. 区块链入门教程——什么是区块链?
  16. 设计窗口模拟教室座位表java,基于web的考研自习教室座位管理(完整源码+论文全套+教学视频)...
  17. Linking two modules of different target triples:
  18. SpringBoot(三):Lombok
  19. JAVA毕设项目林家餐厅自助点餐管理系统(java+VUE+Mybatis+Maven+Mysql)
  20. java代码设置路由

热门文章

  1. 桌面云之深信服VMP平台搭建
  2. 小米蓝牙音响驱动_小米手机绝佳配件,20W无线闪充,支持唤醒小爱,只卖149
  3. 用户需求规格说明书模板,介绍
  4. 部分格式文件解释以及万能文件查看器下载
  5. 记录一下:调试了虹软的人脸识别sdk,存到数据库中
  6. 芒果DB:mongodb
  7. 推荐一个完全免费的高质量素材网站
  8. 北大计算机专业毕业论文,北京大学毕业论文格式范本
  9. matlab画图函数汇总(二)
  10. ArcMAP问题集锦(一)