我想请求社区帮助创建一个带有色彩图的类似Matlab的3D冲浪图,但在Mathematica中。为了使问题更具体,可以说我们在3D空间中有一组数字,并且每个点都有一些函数值c被赋值:
{{x1,y1,z1,c1},{x2,y2,z2,c2},...,{xN,yN,zN,cN}}
这些点位于3D表面上,例如一个球体。现在在matlab中,如果这些点被正确表示为矩阵X
,Y
,Z
,C
,我们可以简单地用
k = 5;
n = 2^k-1;
[x,y,z] = sphere(n);
c = magic(2^k);
surf(x,y,z,c);
colormap gray
axis equal
这里重要的是功能值,由于颜色条可以读取绘图。
现在社区的问题是:
我们可以在Mathematica中制作这样的情节(用彩条 - 这是重要部分)???
我在网上搜索了一个没有运气的解决方案。我查看了ListPlot3D
,ListSurfacePlot3D
,ListPointPlot3D
等内容,但是对于这些函数,您只能传递没有相应点值的曲面(除非有一些我不理解的东西)。 / p>
有没有人知道一个解决方案,一种在Wolfram Mathematica中创建这样的图的方法?
答案 0 :(得分:2)
您可以使用ColorFunction
指定颜色功能:
ParametricPlot3D[{Sin[t] Cos[f], Sin[t] Sin[f], Cos[t]}, {t, 0, Pi}, {f, 0, 2 Pi} ,
ColorFunction -> Function[{x, y, z, t, f}, RGBColor[z]]]
另一种方法是使用纹理;我将使用您使用其他软件生成的数据。
{x, y, z, c} = Import["/tmp/sphere.mat"];
我们想要应用的纹理是c
(实际旋转90度)
ArrayPlot[c]
ParametricPlot3D[{Sin[t] Cos[f], Sin[t] Sin[f], Cos[t]}, {t, 0, Pi}, {f, 0, 2 Pi},
PlotStyle -> Texture[ Rotate[ArrayPlot[c], Pi/2]], Lighting -> "Neutral"]