r - 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)
这给了我
由reprex 包(v0.3.0)于 2020 年 1 月 21 日创建
解决方案
您可以通过检查给定构面的最大 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)
推荐阅读
- c# - 在 .NET Core 3.1 中写入响应正文的最有效方法
- c# - 在源代码和预编译的二进制文件之间切换
- excel - 自动将新工作表添加到 Excel / Google 电子表格中的单元格计算
- c++ - 由于指针无效,在 C++ 代码中释放内存的问题
- frama-c - 在 Frama-C 中证明矩阵转置的正确性
- python - 使用 .rolling() 查找值在特定窗口内满足条件的日期
- python - 一个字符串重复多少次 - python?
- c - 如何在汇编中使用外部 C 函数?
- windows - 是否有工具可以知道程序是否正在请求 WM_INPUT 事件?
- mysql - 无法在 Node.js 中连接到 MySQL Docker