2015-04-22 2 views
2

У меня есть два кадра данных, подобные этим:объединения geom_point и geom_line на одном участке

date <- c("2014-07-06", "2014-07-06","2014-07-06","2014-07-07", "2014-07-07","2014-07-07","2014-07-08","2014-07-08","2014-07-08") 
TIME <- c("01:01:01", "10:02:02", "18:03:03","01:01:01", "10:02:02", "18:03:03","01:01:01", "10:02:02", "18:03:03") 
depth <- c(12, 23, 4, 15, 22, 34, 22, 12, 5) 
temp <- c(14, 10, 16, 13, 10, 9, 10, 14, 16) 
depth.temp <- data.frame(date, TIME, depth, temp) 
depth.temp$asDate<-as.Date(depth.temp$date) 

date <- c("2014-07-06", "2014-07-07","2014-07-08") 
meandepth <- c(13, 16, 9) 
cv <- c(25, 9, 20) 
depth.cv <- data.frame(date, meandepth, cv) 
depth.cv$asDate<-as.Date(depth.cv$date) 

от первого я создал следующий сюжет:

library(ggplot2) 
p1 <- qplot(asDate, depth, data=depth.temp, colour=temp, size = I(5), alpha = I(0.3))+ scale_y_reverse() 
p1 + scale_colour_gradientn(colours = rev(rainbow(12))) 

А из второго этого участка :

p2 <- ggplot(depth.cv, aes(x=asDate, y=meandepth))+ scale_y_reverse() 
p2 + geom_line(aes(size = cv)) 

Я хочу, чтобы объединить оба графика в один с точками на спине и линии в передней, любой sugge stions? Обратите внимание, что точки и линия НЕ производятся из одних и тех же данных, но из двух разных кадров данных.

+0

возможно дубликат [Как объединить 2 сюжета (ggplot) в один сюжет?] (Http://stackoverflow.com/questions/21192002/how-to-combine-2-plots-ggplot-into-one-plot) – figurine

+0

Это похоже, но в этом вопросе обе точки и строка создаются из одного и того же кадра данных, тогда как я использую два отдельных кадра данных для точек и строку –

+0

Упорядочить свой код в аналогичной структуре связанного ответа и не забудьте определить, какой кадр данных используется для каждого сюжет, и все будет хорошо. – figurine

ответ

4

Вы можете добавить data к любому geom_ независимо от того, что вы используете в основном вызове ggplot. Для этого, я бы пропустить какие-либо данные или эстетические задания отображения в главном ggplot вызова и сделать их все в каждом соответствующем geom_:

library(scales) 

gg <- ggplot() 
gg <- gg + geom_point(data=depth.temp, aes(x=asDate, y=depth, color=temp), size=5, alpha=0.3) 
gg <- gg + geom_line(data=depth.cv, aes(x=asDate, y=meandepth, size=cv)) 
gg <- gg + scale_color_gradientn(colours=rev(rainbow(12))) 
gg <- gg + scale_x_date(labels=date_format("%Y-%m-%d")) 
gg <- gg + scale_y_reverse() 
gg <- gg + labs(x=NULL, y="Depth") 
gg <- gg + theme_bw() 
gg 

enter image description here

+0

Это именно то, что я искал, большое спасибо! –

1

В моем случае, для сюжетной линии, чтобы показать, что я должен был установить, как ИСЗ:

AES (х = asDate, у = meandepth, группа = 1)

в geom_line участке

Смежные вопросы