2012-02-02 72 views
43

我想要將來自兩個不同data.frames的兩個ggplots結合到一個圖中。下面你會找到代碼。我想情節結合1 & 2個或3地塊4 &ggplot結合來自不同data.frames的兩個圖

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

這一定是很容易做到的,但不知何故,我無法得到它的工作。謝謝你的時間。

+5

使用'ggplot()'語法,則可以指定數據以用於每個單獨的層,例如'geom_step(data = df2)' – baptiste 2012-02-02 08:30:53

+0

謝謝,這個作品很完美。 – jeroen81 2012-02-02 08:38:22

回答

49

正如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) 
) 
+20

@ naught101最外面的圓括號是使圖表與其賦值打印在同一行中的一種技巧。您也可以將這個技巧與其他變量一起使用。 '(my_variable < - 1:5)'是'my_variable < - 1:5的更清晰版本; my_variable'。 – 2014-06-09 10:26:06

2

你可以把這一招只qplot使用。使用內部變量$mapping。你甚至可以將顏色=添加到你的圖中,這樣它也將被放置在貼圖中,然後你的圖與圖例和顏色自動結合。

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

我怎樣才能使用這種方法使用兩種顏色? – 2016-09-10 08:47:34

+1

@WagnerJorge嘗試讀取qplot文檔並在初始化cpu_metric2時添加顏色,例如'qplot(y = ...,x = ...,color = ...)',然後在'geom_line(mapping ...)內添加顏色,color = ...)' – 2016-09-13 07:50:00

28

我唯一的工作解決方案是在geom_line而不是基礎對象ggplot中定義數據對象。

像這樣:

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

More info here

相關問題