2011-12-12 3 views
5

나는산점도 - 기본 R 플롯

x<-rnorm(100) 
y<-rnorm(100) 
z<-rnorm(100) 

나는 plot(x,y) 음모 싶지만 점의 색상은 색상이어야가 z를 기반으로 코딩 된 간단한 산포도에게 있습니다.

또한, 얼마나 많은 그룹 (따라서 색상)을 정의 할 수있는 능력이 필요합니다. z. 그리고이 그룹은 특이 치에 저항해야합니다 (z 밀도를 같은 밀도 그룹 n으로 나눌 수 있음).

지금까지이 작업을 수동으로 수행했지만 자동으로 수행 할 수있는 방법이 있습니까?

참고 :ggplot이 아닌베이스 R을 사용하여이 작업을 수행하고 싶습니다.

답변

11

col 매개 변수에 벡터 색상을 전달할 수 있으므로 응용 프로그램에 적합한 방식으로 z 그룹을 정의해야합니다. 베이스에 cut() 함수가 있거나 Hmisc에 cut2()이라는 유연성이 더 있습니다. 적절한 색상 팔레트를 선택하는 데 도움이되도록 RColorBrewer 패키지는 매우 유용합니다. 여기 x,y,z을 정의 후 간단한 예는 다음과 같습니다 당신은 분명히 수동으로 legend을 추가 할 수 있습니다

z.cols <- cut(z, 3, labels = c("pink", "green", "yellow")) 
plot(x,y, col = as.character(z.cols), pch = 16) 

enter image description here

. 불행히도 모든 유형의 플롯이 col 인수에 대한 벡터를 허용하지 않는다고 생각하지만 type = "p"이 분명히 작동합니다. 예를 들어 plot(x,y, type = "l", col = as.character(z.cols))은 나에게 단색으로 나옵니다. 이 플롯의 경우 다른 색상을 lines() 또는 segments() 또는 사용해야하는 저레벨 플롯팅 명령이 무엇이든간에 추가 할 수 있습니다. 베이스 그래픽 here에서 type = "l" 플롯으로이를 수행하는 @Andrie의 대답을 참조하십시오.

+0

동일한 콘텐츠 간격으로 cut()을 분할합니까? – ECII

+0

@ECII - 기본적으로 아닙니다. 'Hmisc ::: cut2()'는 각 그룹의 최소 관측 수를 설정하는'm' 인수를 제공합니다. 'z.cols2 <- cut2 (z, m = 길이 (z)/3)와 같은 것이 트릭을해야합니다. – Chase

+0

cut2의 g 인수가 더 좋지 않아야합니까? cut2 (z, g = 3)? – ECII