根据我为每个点 (x,y) 收集的信息,您有两条信息,高度和颜色。您希望使用高度绘制曲面图,并根据每个位置的颜色进行着色。
虽然您可以轻松地指定自定义颜色图,但我认为这对您没有帮助。您正在考虑的与将 (x,y) 处的高度映射到颜色的颜色图不同。
结果在此处的 Surface plots 示例中最为明显
我相信您想要的超出了 matplotlib 的范围,只能通过某种我怀疑您是否希望使用的 hack 来完成。
仍然是我的建议:
import pylab as py
from mpl_toolkits.mplot3d import Axes3D
import numpy as np
X = np.arange(-5, 5, 0.1)
Y = np.arange(-5, 5, 0.1)
X, Y = np.meshgrid(X, Y)
R = np.sqrt(X**2 + Y**2)
Z = np.sin(R)
colorise = [((5.0 + X[i][i])/10.0, 0.5, 0.0) for i in xrange((len(X)))]
ax = py.subplot(111, projection='3d')
for i in xrange(len(X)):
ax.plot(X[i], Y[i], Z[i], "o", color=colorise[i])
py.show()
这会产生以下结果:
重要的是,这显示了一个 3D 表面,其着色不依赖于高度(它是一个方向上的渐变)。最明显的问题是,为单个点着色会丢失 matplotlibs 表面,这使得它非常清楚为什么 3d 绘图被称为投影!
抱歉,这不是很有帮助,希望存在更好的软件,或者我不知道 matplotlibs 的全部功能。