我读到有人有类似的问题(ggplot2 和facet_grid:为每个图添加最高值 https://stackoverflow.com/questions/41377236/ggplot2-and-facet-grid-add-highest-value-for-each-plot)但我仍然无法解决我的问题。
以此为例:
data.frame(x=rnorm(100),y=rnorm(100),z=rep(c("A","B"))) %>% ggplot(aes(x,y)) + geom_point() + facet_wrap(~z)
我只想标记每个图中的最大 y 值点。我想用+ geom_label_repel(aes(label=y))
但我最终给所有点贴上了标签。
我也尝试过+ geom_label(data=.[.$y==max(.$y),], aes(label=y))
我以为.
应该是一个管道运算符左侧参数的占位符 https://www.datacamp.com/community/tutorials/pipe-r-tutorial#howto但这样做是行不通的。
奇怪的注意:我也想在不将数据帧分配给全局环境中的变量的情况下执行此操作,因此我使用管道运算符。我们可以在不分配任何变量的情况下做到这一点吗?
您可以通过过滤原始数据集并将其作为“数据”参数传递给文本几何来完成此操作。看起来有点奇怪(而且你必须使用“.”运算符来引用 dplyr 链的数据集,我个人不喜欢),但它绝对有效,而且你不必从外部引用数据。
set.seed(1222)
data.frame(x=rnorm(100),y=rnorm(100),z=rep(c("A","B"))) %>%
ggplot(aes(x,y)) + geom_point() +
geom_label(data = . %>% group_by(z) %>% filter(y == max(y)), aes(label = sprintf('%0.2f', y)), hjust = -0.5) +
facet_wrap(~z)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)