0
点赞
收藏
分享

微信扫一扫

Matplotlib 3D 数据

王老师说 2022-06-17 阅读 139

3D 图

首先在进行 ​​3D Plot​​​ 时除了导入 ​​matplotlib​​​ ,还要额外添加一个模块,即 ​​Axes 3D​​ 3D 坐标轴显示:

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

之后要先定义一个图像窗口,在窗口上添加3D坐标轴,显示成下图:

fig = plt.figure()
ax = Axes3D(fig)

Matplotlib 3D 数据_3d

接下来给进 X 和 Y 值,并将 X 和 Y 编织成栅格。每一个(X, Y)点对应的高度值我们用下面这个函数来计算。

# X, Y value
X = np.arange(-4, 4, 0.25)
Y = np.arange(-4, 4, 0.25)
X, Y = np.meshgrid(X, Y) # x-y 平面的网格
R = np.sqrt(X ** 2 + Y ** 2)
# height value
Z = np.sin(R)

今天的结果是这样的:

Matplotlib 3D 数据_3d_02

做出一个三维曲面,并将一个 ​​colormap rainbow​​ 填充颜色,之后将三维图像投影到 XY 平面上做一个等高线图。 plot 3D 图像:

ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap=plt.get_cmap('rainbow'))

其中,​​rstride​​​ 和 ​​cstride​​ 分别代表 row 和 column 的跨度。

下面两个图分别是跨度为1 和 5 的效果:

Matplotlib 3D 数据_ide_03
Matplotlib 3D 数据_3d_04

投影

下面添加 XY 平面的等高线:

ax.contourf(X, Y, Z, zdir='z', offset=-2, cmap=plt.get_cmap('rainbow'))

如果 ​​zdir​​ 选择了x,那么效果将会是对于 XZ 平面的投影,效果如下:

Matplotlib 3D 数据_坐标轴_05

最终我们的结果如下图:

Matplotlib 3D 数据_坐标轴_06



举报

相关推荐

0 条评论