2012-02-02 21 views
43

Tôi muốn kết hợp hai ggplots, từ hai data.frames khác nhau, thành một ô. Dưới đây bạn sẽ tìm thấy mã. Tôi muốn kết hợp cốt truyện 1 & 2 hoặc lô 3 & 4.ggplot kết hợp hai ô từ các dữ liệu khác nhau.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() 

này phải rất dễ làm, nhưng bằng cách nào đó tôi không thể có được nó để làm việc. Cảm ơn vì đã dành thời gian cho tôi.

+5

sử dụng 'ggplot()' cú pháp, bạn có thể chỉ định các dữ liệu để sử dụng cho từng lớp, ví dụ 'geom_step (data = df2)' – baptiste

+0

Cảm ơn, công trình này hoàn hảo. – jeroen81

Trả lời

49

Như Baptiste đã nói, bạn cần xác định đối số dữ liệu ở cấp địa lý. Hoặc

#df1 is the default dataset for all geoms 
(plot1 <- ggplot(df1, aes(v, p)) + 
    geom_point() + 
    geom_step(data = df2) 
) 

hoặc

#No default; data explicitly specified for each geom 
(plot2 <- ggplot(NULL, aes(v, p)) + 
     geom_point(data = df1) + 
     geom_step(data = df2) 
) 
+20

@ naught101 Các dấu ngoặc đơn ngoài cùng là một thủ thuật để làm cho bản in được in trong cùng một dòng với nhiệm vụ của nó. Bạn có thể sử dụng thủ thuật này với các biến khác nữa. '(my_variable <- 1: 5)' là một phiên bản sạch hơn 'my_variable <- 1: 5; my_variable'. –

2

Bạn có thể lừa này để sử dụng chỉ qplot. Sử dụng biến bên trong $mapping. Bạn thậm chí có thể thêm màu = vào ô của bạn để điều này cũng sẽ được putted trong bản đồ quá, và sau đó lô của bạn kết hợp với huyền thoại và màu sắc tự động.

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

Tôi có thể đặt hai màu bằng cách sử dụng phương pháp này như thế nào? –

+1

@WagnerJorge cố đọc tài liệu qplot và thêm màu khi khởi tạo cpu_metric2, như 'qplot (y = ..., x = ..., color = ...)', sau đó thêm màu bên trong 'geom_line (ánh xạ ... , color = ...) ' –

28

Giải pháp làm việc duy nhất cho tôi, là xác định đối tượng dữ liệu trong geom_line thay vì đối tượng cơ sở, ggplot.

Như thế này:

ggplot() + 
geom_line(data=Data1, aes(x=A, y=B), color='green') + 
geom_line(data=Data2, aes(x=C, y=D), color='red') 

thay vì

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

Các vấn đề liên quan