「plot3D」を使用した3D散布図の色付けの問題
plot3D
パッケージを使用して3D散布図を作成しようとしています。残念ながら、各ポイントに色を割り当てるのに問題があります。
たとえば、プロットに8ポイントを描画しようとして、最初の4ポイントに「黒」を割り当て、最後の4ポイントに「赤」を割り当てたい場合、次のスクリプトを作成しました(このスクリプトでは、8つのサンプルを使用しました)サンプルデータセットからiris
と割り当てることを試みSepal.Length
、Petal.Length
、Sepal.Width
それぞれX、Y、Z軸方向に)。
data(iris)
sep.l <- iris[1:8,]$Sepal.Length pet.l <- iris[1:8,]$Petal.Length
sep.w <- iris[1:8,]$Sepal.Width
library(plot3D)
scatter3D(x=sep.l, y=pet.l, z=sep.w,
pch =19,
bty = "b2",
colkey= FALSE,
col=c(rep("black", 4), rep("red", 4)))
この場合、不思議なことに、それぞれ6点が黒、2点が赤になりました。なぜこれが起こるのか私は完全に途方に暮れています。
この問題の解決方法を教えていただければ幸いです。事前にどうもありがとうございました!
回答
6つの黒と2つの赤が表示される理由colvar
は、カラーリングscatter3D
で使用するための呼び出しから欠落しているためcol
です。
あなたの例では、色はあなたのz軸に基づいています。実例を示すために、を追加し直しcolkey
、追加ticktype
して軸情報を表示し、少し回転sep.w
して、データの2つの値(3.6と3.9)のみを含む3.45インチ(z軸)を超える値に赤色が適用されることを示します。 。
data(iris)
sep.l <- iris[1:8,]$Sepal.Length pet.l <- iris[1:8,]$Petal.Length
sep.w <- iris[1:8,]$Sepal.Width
library(plot3D)
scatter3D(x = sep.l, y = pet.l, z = sep.w,
pch = 19,
bty = "b2",
colkey = TRUE,
phi = 15,
theta = 30,
col=c(rep("black", 4), rep("red", 4)),
ticktype = "detailed"
)

ここで、8ポイントのインデックス/番号に基づいて色を割り当てたい場合colvar
は、たとえば、最初の4つの値を黒の場合は1として、次の4つの値を赤の場合は2として追加して割り当てることができます。
scatter3D(x = sep.l, y = pet.l, z = sep.w,
pch = 19,
bty = "b2",
colkey = FALSE,
phi = 15,
theta = 30,
col=c(rep("black", 4), rep("red", 4)),
ticktype = "detailed",
colvar = c(rep(1, 4), rep(2, 4)))

colvar
ポイントに色を付けるのに意味のある別のベクトルを検討できます。x、y、zデータと同じ長さであることを確認してください。