10

ListLinePlot私は次のようなことをすることで色を得ることができます

ListLinePlot[Range[420, 680, 20], ColorFunction -> "VisibleSpectrum", ColorFunctionScaling -> False]

Mathematicaグラフィックス

ただし、ヘルプファイルに示されているように(「ColorFunction少なくとも1つのデータセットが必要ですJoined」)、同等の処理を行うと

ListPlot[Range[420, 680, 20], ColorFunction -> "VisibleSpectrum", ColorFunctionScaling -> False]

Mathematicaグラフィックス

私のポイントはすべて青です。一緒ColorFunctionに仕事をするための良い方法はありますか?ListPlotJoined -> False

つまり、次のようなものを取得するためのより良い方法はありますか

ListPlot[
 List /@ Transpose[{Range[(680 - 420)/20 + 1], Range[420, 680, 20]}], 
 PlotMarkers -> ({Graphics[{#, Disk[]}], 0.05} & /@ ColorData["VisibleSpectrum"] /@ Range[420, 680, 20])
]

Mathematicaグラフィックス

(また、Mathematicaを利用するためになぜ必要なのかについての説明はありますか?)Joined -> TrueColorFunction

編集:私はまたErrorListPlotErrorBarPlotsパッケージで同様の着色を行う方法を探しています。

4

3 に答える 3

7

問題は、Joined-> TrueがLine[]を描画し、それを含む各ポイントにVertexColorsを指定できることです。[参加]->[偽]を設定すると、ポイントが機能しない状況になると思います。それでも、Line[]とPoint[]は、あなたの場合はほとんど同じように機能します。だから何について

ListLinePlot[Range[420, 680, 20], ColorFunction -> "VisibleSpectrum", 
  ColorFunctionScaling -> False] /. Line[arg___] :> Point[arg]

Mathematicaグラフィックス

ちなみに、ListLinePlotのみを使用していて、発生するLine []ディレクティブがデータからのものだけである場合、これは、より多くのデータセットと{x、y}座標がある場合でも機能するはずです。

data = Transpose[Table[{{x, Sin[x]}, {x, Cos[x]}}, {x, 0, 2 Pi, 0.2}]];
ListLinePlot[data, ColorFunction -> Hue] /. Line[arg___] :> Point[arg]

Mathematicaグラフィックス

于 2011-12-31T13:04:54.647 に答える
3

あなたが使用することができますDiscretePlot

data = Range[420, 680, 20];
DiscretePlot[data[[i]], {i, Length[data]},
   ColorFunction -> "VisibleSpectrum", ColorFunctionScaling -> False,
   Filling -> None]

Mathematicaグラフィックス

x、yポイントのリストをプロットする場合は、少し注意が必要です。

data = Transpose[{Range[420, 680, 20], Range[400, 530, 10]}];
mapping = Apply[Rule, data, 2];
DiscretePlot[i/.mapping, {i, data[[;;,1]]},
   ColorFunction -> "VisibleSpectrum", ColorFunctionScaling -> False,
   Filling -> None]

Mathematicaグラフィックス

DiscretePlotポイントの色を変えるのはかなり奇妙に思えますが、そうでListPlotはありません。実装の詳細と関係があるのではないかと思いますが、そうなる理由は考えられません。

于 2011-12-31T13:02:28.280 に答える
1

私も仕事でこの問題に遭遇しました。次の方法で各ポイントに色を割り当てます。

data = ...
ListPlot[data] /. Point[args___] :> Point[args, VertexColors -> {c1, c2, ...}]

ここc1で、は最初のデータポイントの色などです。カラーリストは、プログラムで生成することができます。

ColorData["Rainbow"] /@ (Range@Length@data / Length@data)

結果は次のとおりです。

この方法の良い点は次のとおりです。

  • 簡単です。ペアのリストがあり、対応する色のリストを作成します。
  • 元のListPlotコードを変更する必要はありません(たとえば、に変更する必要はありませんListLinePlot)。
于 2013-03-23T00:55:02.383 に答える