電子書籍の厳選無料作品が豊富!

Mathematicaで3D散布図を描画しようとしています.

Show内で,Graphics3D[Point[{x1,y1,z1}]],Graphics3D[Point[{x2,y2,z2}]],・・・というように,1プロットずつ記述しています.

このとき,データごとにプロットの形状を”●”,”▲”,”■”などのように変更することは出来ますか?

PlotMarkesrを使用することで,出来そうなのですが,Graphics3D内でPlotMarkersを記述するとエラーではじかれてしまいます.

PlotMarkersはListPlotなどの関数じゃないと,使用出来ないのでしょうか?
公式サイトのヘルプは充実しているのですが,イマイチ分かりません.

よろしくお願いします.

A 回答 (1件)

GraphicsやGraphics3Dで、指定した座標に文字列を表示させたい場合は、PointではなくTextを使います。



例)
data1 = RandomReal[1, {10, 3}];
data2 = RandomReal[1, {10, 3}];
Graphics3D[{Text["●", #] & /@ data1, Text["■", #] & /@ data2}]


なお、PlotやPlot3Dなどの関数は最終的にGraphicsやGraphics3Dを生成します。
PlotMarkersオプションを指定した時に、これらの関数が何をやっているのか調べたければ、
ListPlot[{{1, 2, 3, 5, 8}, {2, 3, 6, 9, 10}},
PlotMarkers -> Automatic] // FullForm
というように、FullFormを使うと何をやっているのかわかります。
私のMathematica 8ではInsetでマーカーを生成していました。
なので、上の例の場合においてもTextをInsetに変えても動作すると思います。
    • good
    • 0
この回答へのお礼

分かりやすいご回答ありがとうございます.
助かりました.

お礼日時:2014/09/22 20:39

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!