基本3D图的绘制

Matplotlib 已经内置了三维图形,所以我们只需要引入这些完整的模块就可以了:

from mpl_toolkits.mplot3d import axes3d
import matplotlib.pyplot as plt

使用axes3d是因为它需要不同种类的轴域,以便在三维中实际绘制一些东西。 下面:

fig = plt.figure()
ax1 = fig.add_subplot(111, projection='3d')

在这里,我们像通常一样定义图形,然后我们将ax1定义为通常的子图,只是这次使用 3D 投影。 我们需要这样做,以便提醒 Matplotlib 我们要提供三维数据。

现在让我们创建一些 3D 数据:

x = [1,2,3,4,5,6,7,8,9,10]
y = [5,6,7,8,2,5,6,3,7,2]
z = [1,2,6,3,2,7,3,3,7,2]

接下来,我们绘制它。 首先,让我们展示一个简单的线框示例:

ax1.plot_wireframe(x,y,z)

最后:

ax1.set_xlabel('x axis')
ax1.set_ylabel('y axis')
ax1.set_zlabel('z axis')plt.show()

我们完整的代码是:

from mpl_toolkits.mplot3d import axes3d
import matplotlib.pyplot as plt
from matplotlib import stylestyle.use('fivethirtyeight')fig = plt.figure()
ax1 = fig.add_subplot(111, projection='3d')x = [1,2,3,4,5,6,7,8,9,10]
y = [5,6,7,8,2,5,6,3,7,2]
z = [1,2,6,3,2,7,3,3,7,2]ax1.plot_wireframe(x,y,z)ax1.set_xlabel('x axis')
ax1.set_ylabel('y axis')
ax1.set_zlabel('z axis')plt.show()

结果为(包括所用的样式):

这些 3D 图形可以进行交互。 首先,您可以使用鼠标左键单击并拖动来移动图形。 您还可以使用鼠标右键单击并拖动来放大或缩小。

3D 散点图的绘制

绘制 3D 散点图非常类似于通常的散点图以及 3D 线框图。

一个简单示例:

from mpl_toolkits.mplot3d import axes3d
import matplotlib.pyplot as plt
from matplotlib import stylestyle.use('ggplot')fig = plt.figure()
ax1 = fig.add_subplot(111, projection='3d')x = [1,2,3,4,5,6,7,8,9,10]
y = [5,6,7,8,2,5,6,3,7,2]
z = [1,2,6,3,2,7,3,3,7,2]x2 = [-1,-2,-3,-4,-5,-6,-7,-8,-9,-10]
y2 = [-5,-6,-7,-8,-2,-5,-6,-3,-7,-2]
z2 = [1,2,6,3,2,7,3,3,7,2]ax1.scatter(x, y, z, c='g', marker='o')
ax1.scatter(x2, y2, z2, c ='r', marker='o')ax1.set_xlabel('x axis')
ax1.set_ylabel('y axis')
ax1.set_zlabel('z axis')plt.show()

结果为:

要记住你可以修改这些绘图的大小和标记,就像通常的散点图那样。

3D 条形图的绘制

在这个 Matplotlib 教程中,我们要介绍 3D 条形图。 3D 条形图是非常独特的,因为它允许我们绘制多于 3 个维度。 不,你不能超过第三个维度来绘制,但你可以绘制多于 3 个维度。

对于条形图,你需要拥有条形的起点,条形的高度和宽度。 但对于 3D 条形图,你还有另一个选项,就是条形的深度。 大多数情况下,条形图从轴上的条形平面开始,但是你也可以通过打破此约束来添加另一个维度。 然而,我们会让它非常简单:

from mpl_toolkits.mplot3d import axes3d
import matplotlib.pyplot as plt
import numpy as np
from matplotlib import style
style.use('ggplot')fig = plt.figure()
ax1 = fig.add_subplot(111, projection='3d')x3 = [1,2,3,4,5,6,7,8,9,10]
y3 = [5,6,7,8,2,5,6,3,7,2]
z3 = np.zeros(10)dx = np.ones(10)
dy = np.ones(10)
dz = [1,2,3,4,5,6,7,8,9,10]ax1.bar3d(x3, y3, z3, dx, dy, dz)ax1.set_xlabel('x axis')
ax1.set_ylabel('y axis')
ax1.set_zlabel('z axis')plt.show()

注意这里,我们必须定义xyz,然后是 3 个维度的宽度、高度和深度。 这会生成:

总结

欢迎阅读最后的 Matplotlib 教程。 在这里我们将整理整个系列,并显示一个稍微更复杂的 3D 线框图:

from mpl_toolkits.mplot3d import axes3d
import matplotlib.pyplot as plt
import numpy as np
from matplotlib import style
style.use('ggplot')fig = plt.figure()
ax1 = fig.add_subplot(111, projection='3d')x, y, z = axes3d.get_test_data()print(axes3d.__file__)
ax1.plot_wireframe(x,y,z, rstride = 3, cstride = 3)ax1.set_xlabel('x axis')
ax1.set_ylabel('y axis')
ax1.set_zlabel('z axis')plt.show()

如果你从一开始就关注这个教程的话,那么你已经学会了 Matplotlib 提供的大部分内容。 你可能不相信,但Matplotlib 仍然可以做很多其他的事情! 请继续学习,你可以随时访问 Matplotlib.org,并查看示例和图库页面。

注:空间曲面的画法


# 二次抛物面 z = x^2 + y^2x = np.linspace(-10, 10, 101)
y = x
x, y = np.meshgrid(x, y)
z = x ** 2 + y ** 2
ax = plot.subplot(111, projection='3d')
ax.plot_wireframe(x, y, z)
plot.show()


# 半径为 1 的球t = np.linspace(0, np.pi * 2, 100)
s = np.linspace(0, np.pi, 100)
t, s = np.meshgrid(t, s)
x = np.cos(t) * np.sin(s)
y = np.sin(t) * np.sin(s)
z = np.cos(s)
ax = plot.subplot(111, projection='3d')
ax.plot_wireframe(x, y, z)
plot.show()

matplotlib基础教程-3D绘图(2)相关推荐

  1. Python绘图之matplotlib基础教程:matplotlib库图表绘制中常规设置大全(交互模式、清除原有图像、设置横坐标显示文字/旋转角度、添加图例、绘图布局自动调整、图像显示、图像暂停)

    Python绘图之matplotlib基础教程:matplotlib库图表绘制中常规设置大全(交互模式.清除原有图像.设置横坐标显示文字/旋转角度.添加图例.绘图布局自动调整.图像显示.图像暂停) 目 ...

  2. Matplotlib基础(part1)--基本绘图

    学习笔记,这个笔记以例子为主. 开发工具:Spyder 文章目录 matplotlib概述 matplotlib基本绘图 先来几个案例简单了解一下matplotlib 案例1(绘制一条余弦曲线) 案例 ...

  3. unity3d 怎么生成网页版_Unity3D 基础教程3D网页游戏场景打包与加载

    3D游戏中,一个场景往往斗劲大,若是游戏的进行须要下载一个10M甚至更大的场景时,加载所用的时候会导致很大项目组玩家的流失. 我们知道Unity3D中的内置地形是应用一张高度图,对其地形进行打包今后, ...

  4. python 3d绘图-python - 轻松学会Matplotlib 3D绘图

    大多数数据可视化教程都给出了大致相同的基本内容:散点图,折线图,箱形图,条形图和热图等,一般都是2D平面图. 但是,如果我们希望跟进一步,该怎么办? 2D图只能显示一对x--y轴之间的关系;而3D图可 ...

  5. Matplotlib 3D绘图

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

  6. Matplotlib 绘图教程(3D)

    一.实验介绍 1.1 实验内容 Matplotlib 是支持 Python 语言的开源绘图库,因为其支持丰富的绘图类型.简单的绘图方式以及完善的接口文档,深受 Python 工程师.科研学者.数据工程 ...

  7. matplotlib——3D绘图教程

    开始 绘制曲线 绘制散点图 改变图像角度 声明: 本文参考自matplotlib官方教程 介绍了3D曲线图和散点图的绘制,以后可能会添加更复杂图形的绘制方法. 开始   使用matplotlib绘制3 ...

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

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

  9. python安装绘图库matplotlib_Python基础教程:Python 2D绘图库 Matplotlib 简介和安装

    原标题:Python基础教程:Python 2D绘图库 Matplotlib 简介和安装 来自:Linux迷https://www.linuxmi.com/python-2d-matplotlib.h ...

最新文章

  1. 扫描PDF转换成word文档如何操作
  2. java ip加密如何访问_java代码中如何实现http访问
  3. javaScript(1):基础部分
  4. python batch_size_python 實現動態 batch size,多張圖片如何堆疊轉成指針
  5. (数据库系统概论|王珊)第十一章并发控制-第二、三、四节:封锁、封锁协议活锁和死锁
  6. 中国科学院计算机研究生调剂,计算机网络信息中心2019年硕士研究生接收调剂信息公告...
  7. 斐波那契数列-爬楼梯算法
  8. 从0开始学习 GitHub 系列之「07.GitHub 常见的几种操作」
  9. 全国离线地图矢量地图矢量数据点线面数据
  10. SE11字段过多时怎么快速建表
  11. 内核block层IO调度器—bfq算法深入探索3
  12. error: crosses initialization of ‘std::string xx变量‘
  13. 生活中,如何学会放下
  14. 张亚勤、刘慈欣、周鸿祎、王飞跃新书推荐,《崛起的超级智能:互联网大脑如何影响科技未来》...
  15. 三菱PLC中通过变址寄存器V或Z实现简单跑马灯的程序示例及说明
  16. 视频配音怎么制作?手把手教你配音视频制作
  17. 蝉知门户系统迁移到SAE平台-File模块扩展
  18. 龙,中国,不是dragon
  19. SWFUpload多文件上传使用指南
  20. 游戏帧同步和状态同步

热门文章

  1. 3D场景设计和渲染软件Adobe Substance 3D Stager中文版
  2. 手机中mac地址,ip地址,imei的区别
  3. 数据库实验之《数据定义与简单查询》
  4. Java 生成固定长度随机中文字符串
  5. 计算机专业有必要进实验室吗,本科生有必要进实验室吗? 看看学姐的经验
  6. STM32读取GPS数据-ATGM336H
  7. typed.js——动态打印字体插件
  8. 一年看完64本书后最大的收获:读书无用
  9. office2019 图目录_抠发丝简直弱爆了,这款抠图神器什么都能抠!,支持win/Mac
  10. MPW和Pilot的区别?