在Matplotlib中的4D热力图

6
我希望通过matplotlib在Python中绘制一个4D热图,就像这个4D地图一样。
我已经有一个由三维网格点(x,y,z)和其对应的函数值f组成的数据集。
我考虑使用plot_surface函数,将xyz作为三个必需的数组,并使用f来调整颜色梯度。
这里有一种方法可以使用f来调整颜色梯度,但我无法绘制3D网格。需要强调的是第三个维度是独立于前两个维度的。(第二个链接显示了不同的情况。)
还有其他更好的方法来使用matplotlib可视化这个4D数据吗?

由于您只能看到3个表面而不是整个体积,因此可以在3个不同的平面上显示3个标准的热力图。 - Eric Duminil
2
我也想到了那个。但是我正在考虑交互式地可视化它(通过 plt.show()),从而可以看到立方体的所有面。这样做,使用自定义网格数组绘制6个热力图并检查每个平面的 f 的索引将会很麻烦。 - jjv
2个回答

1

2
有趣的是,这个例子中第三个维度是第一和第二个维度的函数,而问题中给定的数据是第三个维度与前两个维度是独立的。 - jjv
不回答问题,正如@jjv所指出的。 - John

0

目前没有很好的方法来可视化真正的四维函数(就像你所描述的那样,第三维度独立于前两个维度),因此我编写了一个小包plot4d。它应该能够帮助您可视化您的函数。

from plot4d import plotter
f = lambda x, y, z: sin(x)*y*cos(z)-x**3
z_range = np.linspace(0,2,10)
frame = plotter.Frame2D(xmin=0, xmax=1, ymin=0, ymax=1)
plotter.plot4d(f, z_range, frame=frame, func_name='f')

f.gif

安装:
pip install plot4d

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接