首页 > 解决方案 > 绘图中的垂直偏移 - 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 方向的闪避能力。我真的不想预先计算数据中的偏移量。

标签: rggplot2

解决方案


这有点不正统,我不确定这是预期的用例,但您可以使用 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 创建


推荐阅读