r을 사용하여 GGPLOT2 산점도에 두 개의 데이터 벡터를 플로팅
문제
나는 둘 다 실험 해왔다 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")
격자 출력은 다음과 같습니다.
(원천: Cerebralmastication.com)
그리고 GGPlot은 다음과 같습니다.
(원천: 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)
나에게 어떻게 보이는지는 다음과 같습니다.
(원천: 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")
그게 좋은 일을하는 방법입니까? 두 번째 항목을 추가하는 것은 첫 번째 항목과는 완전히 다른 구문을 가지고 있기 때문에 나에게 이상합니다.