首页 > 解决方案 > ggplot添加不影响限制的geom(特别是geom_hline)

问题描述

只有当数据接近阈值时,我才想在一些数据上绘制阈值。因此,我希望在我的阈值处有一条水平线,但如果尚未包含此值,则不要扩展 y 轴限制。由于我的数据是多面的,因此预先计算限制是不可行的,我正在为许多不同的数据集做这件事,所以会变得非常混乱。这个问题似乎在问同样的事情,但答案与我无关:ggplot2:添加几何而不影响限制

简单的例子。

library(ggplot2)
#> Warning: package 'ggplot2' was built under R version 3.5.3

ggplot(iris, aes(x = Sepal.Width, y = Sepal.Length))+geom_point()+facet_wrap(~Species, scales = "free")+geom_hline(yintercept = 7)

这给了我

但我希望这个(在油漆中创建)限制不受geom_hline 预期输出

reprex 包(v0.3.0)于 2020 年 1 月 21 日创建

标签: rggplot2

解决方案


您可以通过检查给定构面的最大 y 值是否超过阈值来自动执行此操作。

threshold = 7
iris %>% 
  ggplot(aes(Sepal.Width, Sepal.Length)) +
  geom_point() + 
  facet_wrap(~Species, scales = "free") + 
  geom_hline(data = . %>% 
               group_by(Species) %>%  
               filter(max(Sepal.Length, na.rm=TRUE) >= threshold), 
             yintercept = threshold)

推荐阅读