-1

我知道我可以使用以下代码在 matplotlib 中绘制 4D 图,第四维显示为颜色图:

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

fig = plt.figure()
ax = fig.add_subplot(111,projection= '3d' )
x = np.arange(100)/ 101
y = np.sin(x) + np.cos(x)
X,Y = np.meshgrid(x,y)
Z = (X**2) / (Y**2)
A = np.sin(Z)

ax.plot_surface(X,Y, Z, facecolors=cm.Oranges(A))
plt.show()

但是,如果我的数据不是其他数据的函数怎么办?没有 np.meshgrid 我该怎么做?(换句话说,我的 Z 系列不能是 X,Y 的输出的函数,它是 np.meshgrid(x,y) 的输出,因为 Z 不是 X 和 Y 的函数。)

4

1 回答 1

1

曲面图是 2D 点到 1D 值的映射,即对于每一对(x,y)坐标,您只需要一个z坐标。因此,虽然不是严格必须是andZ的函数,但要绘制的那些数组需要具有相同数量的元素。XY

对于 a plot_surface,限制是具有网格XY的 2D 数据。Z不必是二维的,但需要具有相同数量的元素。

可以使用 a 来弱化这一要求plot_trisurf,其中唯一的要求是存在 x,y,z 的严格映射,即在 Z 中的i第 th 值XY对应i于 Z中的第 th 值。

无论如何,即使没有解析函数 mapXYto ZZ仍然需要某种映射。否则,结果情节将传达什么信息甚至是值得怀疑的。

于 2017-02-22T09:29:23.857 回答