Python matplotlib:用颜色绘制4D的3D图

3 投票
1 回答
11252 浏览
提问于 2025-04-17 12:26

我想根据一组 x、y、z 点来制作一个 3D 图,并且我希望图上的颜色能够根据一个第四个变量 rho 的值来变化。

目前我有;

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.plot3D(cell_x, cell_y, cell_z, linestyle='None', marker='o', markersize = 5, antialiased=True)
ax.set_xlim3d(0.45, 0.55)
ax.set_ylim3d(0.45, 0.55)
ax.set_zlim3d(0.45, 0.55)

我该如何将 cell_rho(我的第四个数组)作为我 x、y、z 点的颜色呢?(比如说使用 jet 这种颜色映射)。

非常感谢。

补充说明:我不能使用散点图,因为对于我的 18000 个点来说,散点图的速度非常慢,相比之下,使用 plot3d 只加标记要快得多。

1 个回答

7

如果你想显示一个简单的3D散点图,难道不能直接用 scatter 吗?
比如说,

x, y, z = randn(100), randn(100), randn(100)
fig = plt.figure()
from mpl_toolkits.mplot3d import Axes3D
ax = fig.add_subplot(111, projection='3d')
ax.scatter(x, y, z, c=randn(100))
plt.show()

(我是在 python -pylab 环境下运行上面的代码。)

这里输入图片描述

看起来,实际上使用 plot3D 的时候,你必须把你的第四个维度转换成RGB元组。

撰写回答