문제

나는 둘 다 실험 해왔다 ggplot2 그리고 lattice 데이터 패널을 그래프합니다. 나는 내 마음을 감싸는 데 약간의 어려움을 겪고있다 ggplot2 모델. 특히 각 패널에 두 개의 데이터 세트가있는 산점도를 플롯하는 방법은 다음과 같습니다.

안에 lattice 나는 이것을 할 수있다 :

xyplot(Predicted_value + Actual_value ~ x_value | State_CD, data=dd)

그리고 각 열에 각 열이있는 각 state_cd에 대한 패널을 줄 것입니다.

나는 하나의 열을 할 수 있습니다 ggplot2:

pg <- ggplot(dd, aes(x_value, Predicted_value)) + geom_point(shape = 2) 
      + facet_wrap(~ State_CD) + opts(aspect.ratio = 1)
print(pg)

내가 생각할 수없는 것은 위의 ggplot에 실제_value를 추가하는 방법입니다.

편집하다 해들리는 이것이 재현 가능한 예를 들어 실제로 더 쉬울 것이라고 지적했다. 작동하는 것 같습니다. GGPlot과 함께 더 잘 간결한 방법이 있습니까? GGPlot에 다른 포인트 세트를 추가하기위한 구문이 첫 번째 데이터 세트를 추가하는 것과 다른 이유는 무엇입니까?

library(lattice)
library(ggplot2)

#make some example data
dd<-data.frame(matrix(rnorm(108),36,3),c(rep("A",24),rep("B",24),rep("C",24)))
colnames(dd) <- c("Predicted_value", "Actual_value", "x_value", "State_CD")

#plot with lattice
xyplot(Predicted_value + Actual_value ~ x_value | State_CD, data=dd)

#plot with ggplot
pg <- ggplot(dd, aes(x_value, Predicted_value)) + geom_point(shape = 2) + facet_wrap(~ State_CD) + opts(aspect.ratio = 1)
print(pg)

pg + geom_point(data=dd,aes(x_value, Actual_value,group=State_CD), colour="green")

격자 출력은 다음과 같습니다.alt text
(원천: Cerebralmastication.com)

그리고 GGPlot은 다음과 같습니다.alt text
(원천: Cerebralmastication.com)

도움이 되었습니까?

해결책

Ian이 제안한 것에 따르면 : GGPLOT2의 경우 한 열에있는 모든 y 축을 다른 열에있는 모든 열의 모든 y 축을 장식하는 방법을 나타내는 요소로 원합니다. 이 작업을 수행하는 것은 쉽습니다 melt. 재치 :

qplot(x_value, value, 
      data = melt(dd, measure.vars=c("Predicted_value", "Actual_value")), 
      colour=variable) + facet_wrap(~State_CD)

나에게 어떻게 보이는지는 다음과 같습니다.alt text
(원천: Princeton.edu)

무엇에 대한 아이디어를 얻기 위해 melt 실제로하고 있습니다. 여기에 머리가 있습니다.

> head(melt(dd, measure.vars=c("Predicted_value", "Actual_value")))
     x_value State_CD        variable      value
1  1.2898779        A Predicted_value  1.0913712
2  0.1077710        A Predicted_value -2.2337188
3 -0.9430190        A Predicted_value  1.1409515
4  0.3698614        A Predicted_value -1.8260033
5 -0.3949606        A Predicted_value -0.3102753
6 -0.1275037        A Predicted_value -1.2945864

알다시피, 그것은 "melts"predited_value와 실제_value가 value 다른 열을 추가합니다 variable 원래 어떤 칼럼에서 왔는지 알려줍니다.

다른 팁

업데이트: 몇 년이 지난 지금, 나는 거의 항상 조나단의 방법을 사용합니다 ( Tidyr 패키지) ggplot2. 아래의 대답은 핀치로 작동하지만 3 개 이상의 변수가 있으면 지루해집니다.


나는 Hadley가 더 나은 대답을 할 것이라고 확신하지만 - 구문은 다릅니다. ggplot(dd,aes()) 구문은 주로 하나의 변수를 플로팅하기위한 것입니다. 둘째, 나는 다음을 사용한다.

ggplot() + 
geom_point(data=dd, aes(x_value, Actual_value, group=State_CD), colour="green") + 
geom_point(data=dd, aes(x_value, Predicted_value, group=State_CD), shape = 2) + 
facet_wrap(~ State_CD) + 
theme(aspect.ratio = 1)

ggplot ()에서 첫 번째 포인트 세트를 가져 오면 두 번째 구문이됩니다. 구문이 동일하고 GGPLOT2의 핵심에있는 "그래픽의 문법"을 강조하기 때문에 처리하기가 더 쉽습니다.

데이터 양식을 약간 변경하여 하나의 y 축 변수를 갖도록하고 추가 요인 변수가 예측되었는지 또는 실제 변수인지를 나타냅니다.

이것은 당신이하려고하는 것과 같은 것입니까?

dd<-data.frame(type=rep(c("Predicted_value","Actual_value"),20),y_value=rnorm(40),
                x_value=rnorm(40),State_CD=rnorm(40)>0)
qplot(x_value,y_value,data=dd,colour=type,facets=.~State_CD)

질문을 게시 한 후 나는 가로 질러 달렸다 이 r도 도움이됩니다 그것은 저를 도왔을 것입니다. 내가 이것을 할 수있는 것 같습니다.

 pg + geom_line(data=dd,aes(x_value, Actual_value,group=State_CD), colour="green") 

그게 좋은 일을하는 방법입니까? 두 번째 항목을 추가하는 것은 첫 번째 항목과는 완전히 다른 구문을 가지고 있기 때문에 나에게 이상합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top