我是ggplot2的新手,这很精彩,但我有一件事情有困难.
我绘制了一系列跨越一年的时间序列. X轴派生自Date类的变量.我有一个方面,因此我在一个具有独立y轴的列中有7个时间序列.该图的重点是比较每个面与顶面的相关性.
我想做的最后一件事是在每个方面的右上角添加文本(每个方面与第一个方面之间的估计的皮尔逊相关性).
这被证明是非常困难的,因为geom_text()需要每个文本位的x和y坐标.当X轴是日期并且每个面的Y轴不同时,如何指定坐标?这里是一些示例数据和我到目前为止的代码,所以你可以重现我到目前为止:
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,sample(10:100,sample(1:50,sample(1:20,sample(50:100,sample(1:100,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")
解决方法
这不是最新的代码,但我认为它有点像你所追求的:
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,value=(min(value)+max(value))/2)) ggplot(dat,aes(x=date,y=value,group=location)) + geom_line()+ facet_grid(product ~ .,scale = "free_y")+ geom_text(data=corr_plot,label=label),colour="black",inherit.aes=FALSE,parse=TRUE)