python中Matplotlib实现绘制3D图方法介绍


本文摘自php中文网,作者巴扎黑,侵删。

本篇文章主要介绍了python中Matplotlib实现绘制3D图的示例代码,具有一定的参考价值,有兴趣的可以了解一下

Matplotlib 也可以绘制 3D 图像,与二维图像不同的是,绘制三维图像主要通过 mplot3d 模块实现。但是,使用 Matplotlib 绘制三维图像实际上是在二维画布上展示,所以一般绘制三维图像时,同样需要载入 pyplot 模块。
mplot3d 模块下主要包含 4 个大类,分别是:

  • mpl_toolkits.mplot3d.axes3d()

  • mpl_toolkits.mplot3d.axis3d()

  • mpl_toolkits.mplot3d.art3d()

  • mpl_toolkits.mplot3d.proj3d()

其中,axes3d() 下面主要包含了各种实现绘图的类和方法。axis3d() 主要是包含了和坐标轴相关的类和方法。art3d() 包含了一些可将 2D 图像转换并用于 3D 绘制的类和方法。proj3d() 中包含一些零碎的类和方法,例如计算三维向量长度等。

一般情况下,我们用到最多的就是 mpl_toolkits.mplot3d.axes3d() 中的mpl_toolkits.mplot3d.axes3d.Axes3D() 类,而 Axes3D() 下面又存在绘制不同类型 3D 图的方法。你可以通过下面的方式导入 Axes3D()。

from mpl_toolkits.mplot3d.axes3d import Axes3D或from mpl_toolkits.mplot3d import Axes3D

三维散点图

首先,我们导入 numpy 随机生成一组数据。


1

2

3

4

5

6

import numpy as np

 

# x, y, z 均为 0 到 1 之间的 100 个随机数

x = np.random.normal(0, 1, 100)

y = np.random.normal(0, 1, 100)

z = np.random.normal(0, 1, 100)

接下来,开始绘图。第一步是载入 2D, 3D 绘图模块。


1

2

from mpl_toolkits.mplot3d import Axes3D

import matplotlib.pyplot as plt

第二步,使用 Axes3D() 创建 3D 图形对象。


1

2

fig = plt.figure()

ax = Axes3D(fig)

最后,调用散点图绘制方法绘图并显示出来。


1

2

ax.scatter(x, y, z)

plt.show()

三维线型图

线形图和散点图相似,需要传入 x, y, z 三个坐标的数值。详细的代码如下。


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

# 载入模块

from mpl_toolkits.mplot3d import Axes3D

import matplotlib.pyplot as plt

import numpy as np

 

# 生成数据

x = np.linspace(-6 * np.pi, 6 * np.pi, 1000)

y = np.sin(x)

z = np.cos(x)

 

# 创建 3D 图形对象

fig = plt.figure()

ax = Axes3D(fig)

 

# 绘制线型图

ax.plot(x, y, z)

 

# 显示图

plt.show()

三维柱状图

绘制完线型图,我们继续尝试绘制三维柱状图,其实它的绘制步骤和上面同样非常相似。


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

# 载入模块

from mpl_toolkits.mplot3d import Axes3D

import matplotlib.pyplot as plt

import numpy as np

 

# 创建 3D 图形对象

fig = plt.figure()

ax = Axes3D(fig)

 

# 生成数据并绘图

x = [0, 1, 2, 3, 4, 5, 6]

for i in x:

  y = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

  z = abs(np.random.normal(1, 10, 10))

  ax.bar(y, z, i, zdir='y', color=['r', 'g', 'b', 'y'])

plt.show()

三维图曲面图

接下来需要绘制的三维曲面图要麻烦一些,我们需要对数据进行矩阵处理。其实和画二维等高线图很相似,只是多增加了一个维度。


阅读剩余部分

相关阅读 >>

了解Python中的字符串是什么吗?

Python如何导出微信公众号文章

Python如何在图片上添加文字

Python单行注释用什么符号

Python是一种面向什么的高级语言

Python实现跨excel的工作表sheet之间的复制方法

Python中property函数的简单介绍

Python需要什么基础

Python使用pandas处理excel的方法

教你一招用Python破解斗地主残局

更多相关阅读请进入《Python》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...