2012-06-28 26 views
5

Tôi có hai biểu đồ có cùng trục x - phạm vi của x là 0-5 trong cả hai. Tôi muốn kết hợp cả hai thành một biểu đồ và tôi không tìm thấy ví dụ trước. Đây là những gì tôi nhận được:Vẽ hai biến bằng cách sử dụng ggplot2 - cùng trục x

c <- ggplot(survey, aes(often_post,often_privacy)) + stat_smooth(method="loess") 
c <- ggplot(survey, aes(frequent_read,often_privacy)) + stat_smooth(method="loess") 

Làm cách nào để kết hợp chúng? Trục y là "thường riêng tư" và trong mỗi biểu đồ trục x là "thường xuyên đăng" hoặc "đọc thường xuyên". Tôi nghĩ rằng tôi có thể kết hợp chúng một cách dễ dàng (bằng cách nào đó) bởi vì phạm vi là 0-5 trong cả hai.

Rất cám ơn!

+2

này là khá dễ dàng bằng cách định hình lại ('reshape2 :: melt') và sau đó sử dụng một thẩm mỹ như màu (hoặc đơn giản là nhóm) để phân biệt hai biến. Bạn cần phải "tan chảy" theo cách mà bạn giữ 'thường_privacy' như một biến id. Nếu bạn đăng một tập nhỏ dữ liệu của bạn (với 'dput'), tôi chắc chắn bạn sẽ nhận được câu trả lời. –

Trả lời

4

Bạn có thể sử dụng + để kết hợp các ô khác trên cùng một đối tượng ggplot. Ví dụ: để vẽ các điểm và đường trơn cho cả hai cặp cột:

ggplot(survey, aes(often_post,often_privacy)) + 
geom_point() + 
geom_smooth() + 
geom_point(aes(frequent_read,often_privacy)) + 
geom_smooth(aes(frequent_read,often_privacy)) 
+4

Điều này trả lời câu hỏi một cách độc đáo, mặc dù tôi cho rằng ý kiến ​​của tôi ở trên cho thấy cách 'thành ngữ' hơn để làm điều đó (một trong số những thứ khác cung cấp (1) một đoạn mã nhỏ gọn hơn (mặc dù chỉ có hai biến không có lợi thế lớn]) –

10

Ví dụ mã cho giải pháp của Ben.

#Sample data 
survey <- data.frame(
    often_post = runif(10, 0, 5), 
    frequent_read = 5 * rbeta(10, 1, 1), 
    often_privacy = sample(10, replace = TRUE) 
) 
#Reshape the data frame 
survey2 <- melt(survey, measure.vars = c("often_post", "frequent_read")) 
#Plot using colour as an aesthetic to distinguish lines 
(p <- ggplot(survey2, aes(value, often_privacy, colour = variable)) + 
    geom_point() + 
    geom_smooth() 
) 
0

Hãy thử điều này:

df <- data.frame(x=x_var, y=y1_var, type='y1') 
df <- rbind(df, data.frame(x=x_var, y=y2_var, type='y2')) 
ggplot(df, aes(x, y, group=type, col=type)) + geom_line() 

enter image description here

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