0

値を反映するカラースペクトルを表す3次元で、Rで2次元の散布図を作成しようとしています。私はこれに2週間取り組んできましたが、ブログは役に立ちませんでした。これが私のデータセットです:

x=c(0,0,0,0,264,330,594,726,825,825,2145,2475,3630,5082,8250,10725)
y=c(450,540,2250,630,540,2160,1170,2340,1080,738,540,648,900,900,2340,1152)   
z=c(.017778,0,.079365,.037333,0,0,.052991,0,0,.009259,.048148,0,0,0,.004274,.003472)

私はこのコードを試しました...

jet.colors <-colorRampPalette(c("#00007F", "blue", "#007FFF", "cyan","#7FFF7F", "yellow", "#FF7F00", "red", "#7F0000"))

plot(x,y, col=jet.colors(12)[z], ylim=c(0,100), pch=20, cex=2)

legend(8.5,90, col = jet.colors(12)[z], legend=z, pch=15)

...しかし、そうしてもポイントは表示されず、空白のxy平面だけが表示されます。私はggplot2パッケージである程度の成功を収めましたが、見た目が醜いので、単純なplotコマンドでそれを実行できるようにしたいと思います。scatterplot3d、wireframe、countoursから3dグラフを作成することに成功しましたが、これらは複雑で醜いものです。z値がゼロまたは1未満であるなど、単純なものが欠落していることを知ってください。

4

1 に答える 1

3

ここでうまくいくことを除いて、私はそれを説明する方法を本当に知りませんcut。数値変数を因子に変えてから機能します。PS ggplot2 IMHOは美しく、おそらく正しく使用していない可能性があります(かなり柔軟性があります):

plot(x,y, col=jet.colors(12)[cut(z, 12)], pch=20, cex=2)

編集:私はそれを説明できると思います。表記法を使用すると、[]インデックスが作成されます。インデックス作成には整数入力が必要ですが、連続入力が指定されました。それを因数に変えることで、整数のプロパティを与えます (説明をぶち壊して申し訳ありませんが、これは非プログラマーによると R です)。これを以下に示します。

> jet.colors(12)[cut(z, 12)]
 [1] "#0039FF" "#00007F" "#7F0000" "#50FFAD" "#00007F" "#00007F" "#FF9600" "#00007F" "#00007F" "#0000DC"
[11] "#FFF300" "#00007F" "#00007F" "#00007F" "#00007F" "#00007F"

> jet.colors(12)[as.numeric(cut(z, 12))]
 [1] "#0039FF" "#00007F" "#7F0000" "#50FFAD" "#00007F" "#00007F" "#FF9600" "#00007F" "#00007F" "#0000DC"
[11] "#FFF300" "#00007F" "#00007F" "#00007F" "#00007F" "#00007F"

出力が同じであることに注意してください。

于 2012-07-30T13:18:13.280 に答える