두 개의 다른 data.frame에서 두 개의 ggplot을 하나의 플롯으로 결합하고 싶습니다. 아래에서 코드를 찾을 수 있습니다. 플롯 1 & 2 또는 플롯 3 & 4를 결합하고 싶습니다.
df1 <- data.frame(p=c(10,8,7,3,2,6,7,8),
v=c(100,300,150,400,450,250,150,400))
df2 <- data.frame(p=c(10,8,6,4), v=c(150,250,350,400))
plot1 <- qplot(df1$v, df1$p)
plot2 <- qplot(df2$v, df2$p, geom="step")
plot3 <- ggplot(df1, aes(v, p)) + geom_point()
plot4 <- ggplot(df2, aes(v, p)) + geom_step()
이 작업은 매우 쉬울 것 같지만 어떻게 든 작동시킬 수 없습니다. 시간 내 줘서 고마워.
답변
Baptiste가 말했듯이 Geom 수준에서 데이터 인수를 지정해야합니다. 어느 한 쪽
#df1 is the default dataset for all geoms
(plot1 <- ggplot(df1, aes(v, p)) +
geom_point() +
geom_step(data = df2)
)
또는
#No default; data explicitly specified for each geom
(plot2 <- ggplot(NULL, aes(v, p)) +
geom_point(data = df1) +
geom_step(data = df2)
)
답변
저에게 유일한 해결책은 기본 개체 인 ggplot 대신 geom_line에 데이터 개체를 정의하는 것이 었습니다.
이렇게 :
ggplot() +
geom_line(data=Data1, aes(x=A, y=B), color='green') +
geom_line(data=Data2, aes(x=C, y=D), color='red')
대신에
ggplot(data=Data1, aes(x=A, y=B), color='green') +
geom_line() +
geom_line(data=Data2, aes(x=C, y=D), color='red')
답변
이 트릭을 사용하여 qplot 만 사용할 수 있습니다. 내부 변수를 사용하십시오 $mapping
. colour =를 플롯에 추가하여 매핑에도 적용한 다음 플롯을 범례 및 색상과 자동으로 결합 할 수 있습니다.
cpu_metric2 <- qplot(y=Y2,x=X1)
cpu_metric1 <- qplot(y=Y1,
x=X1,
xlab="Time", ylab="%")
combined_cpu_plot <- cpu_metric1 +
geom_line() +
geom_point(mapping=cpu_metric2$mapping)+
geom_line(mapping=cpu_metric2$mapping)