3D 数据
作者:
UnityTutorial
2016-11-03
编辑:
学习资料:
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)
接下来给进 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)
今天的结果是这样的:
做出一个三维曲面,并将一个 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 的效果:
投影 ¶
下面添加 XY 平面的等高线:
ax.contourf(X, Y, Z, zdir='z', offset=-2, cmap=plt.get_cmap('rainbow'))
如果 zdir
选择了x,那么效果将会是对于 XZ 平面的投影,效果如下:
最终我们的结果如下图:
分享到:
如果你觉得这篇文章或视频对你的学习很有帮助, 请你也分享它, 让它能再次帮助到更多的需要学习的人.
UnityTutorial没有正式的经济来源, 如果你也想支持 UnityTutorial 并看到更好的教学内容, 赞助他一点点, 作为鼓励他继续开源的动力.