LC-*_*ist 4 plot label r ggplot2
我读到有人有一个类似的问题(ggplot2 和 facet_grid :为每个图添加最高值)但我仍然无法解决我的问题。
以这个为例:
data.frame(x=rnorm(100),y=rnorm(100),z=rep(c("A","B"))) %>% ggplot(aes(x,y)) + geom_point() + facet_wrap(~z)
Run Code Online (Sandbox Code Playgroud)
我只想标记每个图中的最大 y 值点。我想使用,+ geom_label_repel(aes(label=y))但我最终标记了所有点。
我还尝试了+ geom_label(data=.[.$y==max(.$y),], aes(label=y))我认为.应该是管道运算符左侧参数的占位符的地方,但这样做是行不通的。
奇怪的注意事项:我也想在不将数据框分配给全局环境中的变量的情况下执行此操作,因此我使用了管道运算符。我们可以在不分配任何变量的情况下做到这一点吗?
您可以通过过滤原始数据集并将其作为“数据”参数传递给文本几何体来实现。看起来有点奇怪(而且你必须使用“.”运算符来引用 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)
Run Code Online (Sandbox Code Playgroud)