在相对于构面的相同绘图位置打印相关数据

时间:2013-08-26 19:51:40

标签: r ggplot2

我有一个多面的ggplot2散点图,并且希望打印关于每个方面的线性回归的摘要统计信息,如herehere所做的那样。与这些示例不同,我使用scales="free",并且每个方面的数据范围完全不同,但我希望摘要统计信息显示在每个方面的相同相对位置(例如右上角,管他呢)。如何指定geom_textannotate标签应显示在相对于面板的相同位置?

我现在的位置:

# Fake data
set.seed(2112)
x <- c(1:10, 6:15)
y <- x + c(runif(10), runif(10)*10)
l <- gl(2, 10)
d <- data.frame(x=x, y=y, l=l)

# Calculate a summary statistic (here, the r-squared) in a separate data frame
r_df <- ddply(d, .(l), summarise, rsq=round(summary(lm(y~x))$r.squared, 2))

# Use geom_text and a separate data frame to print the summary statistic
ggplot(d, aes(x=x, y=y)) +
  geom_text(data=r_df, aes(x=8, y=8, label=paste("rsq=", rsq)))+
  geom_point() + 
  facet_wrap(~l, scales="free")

enter image description here

相反,我想让ggplot自动将文本放在每个方面的相同位置。

1 个答案:

答案 0 :(得分:16)

如果您想将它们相对于角落放置,可以通过指定xyInf的{​​{1}}或-Inf位置来实现这一目标:

ggplot(d, aes(x=x, y=y)) +
  geom_text(data=r_df, aes(label=paste("rsq=", rsq)), 
            x=-Inf, y=Inf, hjust=-0.2, vjust=1.2)+
  geom_point() + 
  facet_wrap(~l, scales="free")

enter image description here

我还调整了hjustvjust,因此标签不在图表的确切角落,而是稍微推开了。