matplotlib基础教程-3D绘图(2)
基本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()
注意这里,我们必须定义x
、y
和z
,然后是 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)相关推荐
- Python绘图之matplotlib基础教程:matplotlib库图表绘制中常规设置大全(交互模式、清除原有图像、设置横坐标显示文字/旋转角度、添加图例、绘图布局自动调整、图像显示、图像暂停)
Python绘图之matplotlib基础教程:matplotlib库图表绘制中常规设置大全(交互模式.清除原有图像.设置横坐标显示文字/旋转角度.添加图例.绘图布局自动调整.图像显示.图像暂停) 目 ...
- Matplotlib基础(part1)--基本绘图
学习笔记,这个笔记以例子为主. 开发工具:Spyder 文章目录 matplotlib概述 matplotlib基本绘图 先来几个案例简单了解一下matplotlib 案例1(绘制一条余弦曲线) 案例 ...
- unity3d 怎么生成网页版_Unity3D 基础教程3D网页游戏场景打包与加载
3D游戏中,一个场景往往斗劲大,若是游戏的进行须要下载一个10M甚至更大的场景时,加载所用的时候会导致很大项目组玩家的流失. 我们知道Unity3D中的内置地形是应用一张高度图,对其地形进行打包今后, ...
- python 3d绘图-python - 轻松学会Matplotlib 3D绘图
大多数数据可视化教程都给出了大致相同的基本内容:散点图,折线图,箱形图,条形图和热图等,一般都是2D平面图. 但是,如果我们希望跟进一步,该怎么办? 2D图只能显示一对x--y轴之间的关系;而3D图可 ...
- Matplotlib 3D绘图
20210318 - 利用matplotlib进行3D画图可以实现对三维数据的可视化,而使用3D绘图稍有不同,下面进行具体的描述,本篇文章主要参考<Python三维绘图–Matplotlib&g ...
- Matplotlib 绘图教程(3D)
一.实验介绍 1.1 实验内容 Matplotlib 是支持 Python 语言的开源绘图库,因为其支持丰富的绘图类型.简单的绘图方式以及完善的接口文档,深受 Python 工程师.科研学者.数据工程 ...
- matplotlib——3D绘图教程
开始 绘制曲线 绘制散点图 改变图像角度 声明: 本文参考自matplotlib官方教程 介绍了3D曲线图和散点图的绘制,以后可能会添加更复杂图形的绘制方法. 开始 使用matplotlib绘制3 ...
- python高阶3D绘图---pyvista模块,mayavi模块,pyopengl模块,MoviePy模块基础使用
目录 一.python三维绘图 二.python动画生成 三.项目文件: 一.python三维绘图 ~~~~~~~~ python借助于其编写简单,三方库丰富的特点,可以极为方便的 ...
- python安装绘图库matplotlib_Python基础教程:Python 2D绘图库 Matplotlib 简介和安装
原标题:Python基础教程:Python 2D绘图库 Matplotlib 简介和安装 来自:Linux迷https://www.linuxmi.com/python-2d-matplotlib.h ...
最新文章
- 扫描PDF转换成word文档如何操作
- java ip加密如何访问_java代码中如何实现http访问
- javaScript(1):基础部分
- python batch_size_python 實現動態 batch size,多張圖片如何堆疊轉成指針
- (数据库系统概论|王珊)第十一章并发控制-第二、三、四节:封锁、封锁协议活锁和死锁
- 中国科学院计算机研究生调剂,计算机网络信息中心2019年硕士研究生接收调剂信息公告...
- 斐波那契数列-爬楼梯算法
- 从0开始学习 GitHub 系列之「07.GitHub 常见的几种操作」
- 全国离线地图矢量地图矢量数据点线面数据
- SE11字段过多时怎么快速建表
- 内核block层IO调度器—bfq算法深入探索3
- error: crosses initialization of ‘std::string xx变量‘
- 生活中,如何学会放下
- 张亚勤、刘慈欣、周鸿祎、王飞跃新书推荐,《崛起的超级智能:互联网大脑如何影响科技未来》...
- 三菱PLC中通过变址寄存器V或Z实现简单跑马灯的程序示例及说明
- 视频配音怎么制作?手把手教你配音视频制作
- 蝉知门户系统迁移到SAE平台-File模块扩展
- 龙,中国,不是dragon
- SWFUpload多文件上传使用指南
- 游戏帧同步和状态同步