1

Mathematica で、カラーマップを使用して Matlab のような 3D サーフ プロットを作成する際に、コミュニティに助けを求めたいと思います。質問をより具体的にするために、3D 空間に一連の数値があり、各点に関数値 c が割り当てられているとしましょう。

{{x1,y1,z1,c1},{x2,y2,z2,c2},...,{xN,yN,zN,cN}} 

これらのポイントは、球などの 3D のサーフェス上にあります。Xこれらの点が行列、Y、として適切に表されている場合、matlabではZCこの表面を次のように簡単にプロットできます。

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、のようなものを見ましたがListSurfacePlot3DListPointPlot3Dこれらの関数には、対応するポイント値のないサーフェスしか渡すことができません (私が理解できないことがある場合を除きます)。

Wolfram Mathematica でそのようなプロットを作成する方法を知っている人はいますか?

4

1 に答える 1

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]]]

プロット

もう 1 つの方法は、テクスチャを使用することです。あなたが生成したデータを他のソフトウェアで使用します。

{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"]

スフィアM

于 2013-01-10T20:33:57.920 に答える