Matplotlib颜色表面椭球距中心的距离

时间:2016-06-16 22:50:50

标签: python matplotlib mplot3d

我正在尝试在3D中绘制错误椭圆体。这当然不是那么难,但我发现了collors的麻烦。我使用的色彩图使用颜色的Z值。我想描述椭圆体上一个点与另一个点(简单使用中心点)之间距离的关系。

现在collor从下到上变化,但我希望由于不同轴的变化,它也会发生水平变化。

有没有办法操纵色彩图,所以它显示距离而不是值Z?

我想也许可以像Z一样对栅格进行润滑,但是它不是Z点而是计算距离。是否可以使用另一个2d数组作为colormap而不是默认的Z?

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

我找到了答案。以下代码生成ellispoid及其距离:

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

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')

u = np.linspace(0, 2 * np.pi, 100)
v = np.linspace(0, np.pi, 100)

x = 0.5 * np.outer(np.cos(u), np.sin(v))
y = 0.1 * np.outer(np.sin(u), np.sin(v))
z = 0.2 * np.outer(1, np.cos(v))
T = (x**2+y**2+z**2)**(1/2)
ax.plot_surface(x, y, z, rstride=1, cstride=1, facecolors=cm.jet(T/float(T.max())))
#a = [max(x), max(y), max(z)]

ax.set_xlim([-0.3, 0.3])
ax.set_ylim([-0.3, 0.3])
ax.set_zlim([-0.3, 0.3])
plt.show()

诀窍是使用facecolors将彩色表面设置为其他数据集。答案在这里找到: Representing 4D data in mplot 3D using colormaps

也许会有其他人有同样的问题,所以这就是我发布自己的anwser的原因。