2012-07-12 38 views
10

Tôi mới dùng ggplot2 và nó thật tuyệt vời, nhưng tôi gặp khó khăn với một điều.Thêm văn bản vào ô có mặt trong ggplot2 có ngày trên trục X

Tôi đã vẽ một số chuỗi thời gian kéo dài một năm. Trục X bắt nguồn từ một biến của lớp Date. Tôi có mặt cốt truyện để tôi có 7 chuỗi thời gian trong một cột với trục y độc lập. Toàn bộ điểm của đồ họa này là để so sánh sự tương quan của mỗi khía cạnh với các khía cạnh hàng đầu.

Điều cuối cùng tôi muốn làm là thêm văn bản (tương quan pearson ước tính giữa mỗi khía cạnh và đầu tiên) vào ô ở góc trên bên phải của mỗi khía cạnh.

Điều này chứng minh là vô cùng khó khăn vì geom_text() yêu cầu tọa độ x và y cho từng bit văn bản. Làm cách nào để xác định tọa độ khi trục X là ngày và trục Y khác nhau cho mỗi khía cạnh? Dưới đây là một số dữ liệu mẫu và mã tôi có cho đến nay, do đó bạn có thể tái tạo những gì tôi có cho đến nay:

library(ggplot2) 

date <- rep(as.Date(1:365,origin='2011-1-1'),7) 
location <- factor(rep(1:7,365)) 
product <- rep(letters[1:7], each=365) 
value <- c(sample(1:10, size=365, replace=T),sample(1:3, size=365, replace=T), 
      sample(10:100, size=365, replace=T), sample(1:50, size=365, replace=T), 
      sample(1:20, size=365, replace=T),sample(50:100, size=365, replace=T), 
      sample(1:100, size=365, replace=T)) 
dat<-data.frame(date,location,product,value) 

qplot(date, value, data=dat, geom="line", color=location, group=location, 
     main='Time Series Comparison', xlab='Month (2011)',ylab='Value') + 
     facet_grid(product ~ ., scale = "free_y") 
+0

@Andrie Cảm ơn đã sửa! – rnorberg

Trả lời

9

Đây không phải là mã neatest, nhưng tôi nghĩ nó hơi giống như những gì bạn đang sau:

library(plyr) 

corr_dat<-ddply(dat, .(product), summarise, value=value) 
corr.df<-unstack(corr_dat, value~product) 

corr_plot <- data.frame(date=max(dat$date), 
         label=paste0("rho==",round(cor(corr.df)[,1], 2)), 
         ddply(dat, .(product), summarise, 
          value=(min(value)+max(value))/2)) 

ggplot(dat, aes(x=date, y=value, color=location, group=location)) + 
    geom_line()+ 
    facet_grid(product ~ ., scale = "free_y")+ 
    geom_text(data=corr_plot, aes(x=date, y=value, label=label), 
      colour="black", inherit.aes=FALSE, parse=TRUE) 

Plot with expressions

+0

Hoàn toàn hoàn hảo! Cảm ơn một tấn. Ngoài sự tò mò, 'show.guide = FALSE' làm gì? – rnorberg

+1

'show.guide = FALSE' ngăn văn bản xuất hiện trong chú giải. Nó có thể không được yêu cầu nữa bây giờ mà tôi đặt màu đen. Tôi sẽ loại bỏ nó, tôi nghĩ vậy. –

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