我有一个多面的ggplot2
散点图,并且希望打印关于每个方面的线性回归的摘要统计信息,如here和here所做的那样。与这些示例不同,我使用scales="free"
,并且每个方面的数据范围完全不同,但我希望摘要统计信息显示在每个方面的相同相对位置(例如右上角,管他呢)。如何指定geom_text
或annotate
标签应显示在相对于面板的相同位置?
我现在的位置:
# 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")
相反,我想让ggplot
自动将文本放在每个方面的相同位置。
答案 0 :(得分:16)
如果您想将它们相对于角落放置,可以通过指定x
或y
或Inf
的{{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")
我还调整了hjust
和vjust
,因此标签不在图表的确切角落,而是稍微推开了。