r - 绘图中的垂直偏移 - ggplot 和 geom_line
问题描述
我想提供一些值来提供绘图中 sggplot
之间的一些垂直偏移。geom_line
例如:
library(tidyverse)
mwe <- as_tibble(seq(-5,5,0.5))
mwe <- mwe %>% mutate(p1=dnorm(value,mean=0,sd=0.5), p2=dnorm(value,mean=0,sd=1.0), p3=dnorm(value,mean=0,sd=1.5))
mwe <- mwe %>% gather(p1:p3, key="p", value = "int")
mwe %>% ggplot(aes(x=value, y=int, colour=p)) + geom_line()
我可以提供一些位置语句来提供图之间的恒定偏移量(或者可能是偏移量向量),以便我可以手动最小化它们的重叠吗?在这种特殊情况下,我将 p3 保留在原处,将 p2 上移约 0.1,将 p3 上移约 0.3。
内置位置选项似乎只提供 x 方向的闪避能力。我真的不想预先计算数据中的偏移量。
解决方案
这有点不正统,我不确定这是预期的用例,但您可以使用 ggplot2 v3.3.0 中的延迟评估机制来推动小组。
请注意,group
在下面的情况下,这是一个计算变量,它采用整数值,因此该group
变量将遵循 中设置的组colour
。
library(tidyverse)
mwe <- as_tibble(seq(-5,5,0.5))
mwe <- mwe %>% mutate(p1=dnorm(value,mean=0,sd=0.5),
p2=dnorm(value,mean=0,sd=1.0),
p3=dnorm(value,mean=0,sd=1.5))
mwe <- mwe %>% gather(p1:p3, key="p", value = "int")
mwe %>% ggplot(aes(x = value, colour=p)) +
geom_line(aes(y = stage(int, after_stat = y + c(0, 0.1, 0.3)[group])))
由reprex 包(v0.3.0)于 2020-05-02 创建
推荐阅读
- mysql - 我应该编写冗长的 SQL 查询还是分解为几个迭代
- swift - 能够在实际设备上运行应用程序但无法调用 API
- java - 为空手道中的每个元素匹配字符串 json 数组响应
- coldfusion - 无法通过 ColdFusion 在浏览器中禁用 HttpOnly 标志
- python - 检查一列中的每个值与一个数据框中其他列的每个值
- sql - Oracle SQL:无法根据多于一列的索引创建外键
- javascript - 如何获取数组
- angular - 特性模块中的延迟加载 - Angular
- spring-boot - Spring Webflux WebExceptionHandler 未被 OptimisticLockingFailure 触发
- javascript - Excel对JS的“力量”功能