"plot3D"를 사용한 3D 산점도 채색 문제

Dec 05 2020

plot3D패키지 를 사용하여 3D 산점도를 만들려고 합니다. 불행히도 각 포인트에 색상을 할당하는 데 어려움이 있습니다.

예를 들어 플롯에서 8 점을 그리려고 할 때 처음 4 점에 "검정색"을 할당하고 마지막 4 점에 "빨간색"을 각각 할당하려는 경우 다음 스크립트를 작성했습니다 (이 스크립트에서는 8 개의 샘플을 사용했습니다. 샘플 데이터 세트 에서 , 를 각각 X, Y, Z 축 iris에 할당하려고했습니다 .Sepal.LengthPetal.LengthSepal.Width

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 점은 빨간색으로 표시되었습니다. 왜 이런 일이 발생하는지 완전히 잃어 버렸습니다.

이 문제를 해결하는 방법을 친절하게 알려 주시면 감사하겠습니다. 미리 감사드립니다!

답변

1 Ben Dec 06 2020 at 00:14

6 개의 검은 색과 2 개의 빨간색이 표시되는 이유 는 색상에 사용할 호출 colvar에서 누락 되었기 때문입니다.scatter3Dcol

귀하의 예에서 색상은 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 데이터와 길이가 같은지 확인하십시오.