다른 데이터 프레임의 두 플롯을 결합하는 ggplot


81

두 개의 다른 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()

이 작업은 매우 쉬울 것 같지만 어떻게 든 작동시킬 수 없습니다. 시간 내 줘서 고마워.


8
사용하는 ggplot()구문을 사용하면 각 계층, 예를 들면에 사용할 데이터를 지정할 수 있습니다geom_step(data=df2)
밥 티스트

답변:


78

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)
)

32
@ naught101 가장 바깥 쪽 괄호는 할당과 같은 줄에 플롯을 인쇄하는 트릭입니다. 이 트릭을 다른 변수에도 사용할 수 있습니다. (my_variable <- 1:5)의 더 깨끗한 버전입니다 my_variable <- 1:5; my_variable.
Richie Cotton

62

저에게 유일한 해결책은 기본 개체 인 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')

여기에 더 많은 정보


3

이 트릭을 사용하여 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)

이 접근법을 사용하여 두 가지 색상을 어떻게 넣을 수 있습니까?
바그너 호르헤

1
qplot의 문서를 읽고 cpu_metric2을 초기화 할 때 색상을 추가하려고 @WagnerJorge 같은 qplot(y=..., x=..., colour=...)다음 색상의 내부를 추가geom_line(mapping..., colour=...)
Alexander.Iljushkin
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.