R 调整diffplot以在y轴上显示直方图

R 调整diffplot以在y轴上显示直方图,r,ggplot2,R,Ggplot2,我已经意识到(数据本身可能不是必需的,所以我只坚持绘制线): 当将ylim(平均值(my.data$diff)-3*sd.diff,平均值(my.data$diff)+3*sd.diff)更改为(在我的情况下)ylim(平均值(my.data$diff)-2000*sd.diff,平均值(my.data$diff)+2000*sd.diff)时,这是可以解决的,因此范围显然起了作用。 现在的问题是:当我调整范围时,绘图几乎毫无意义,因为你几乎看不到任何东西。当我坚持使用上述规则范围时,除了右侧y

我已经意识到(数据本身可能不是必需的,所以我只坚持绘制线):

当将
ylim(平均值(my.data$diff)-3*sd.diff,平均值(my.data$diff)+3*sd.diff)
更改为(在我的情况下)
ylim(平均值(my.data$diff)-2000*sd.diff,平均值(my.data$diff)+2000*sd.diff)
时,这是可以解决的,因此范围显然起了作用。 现在的问题是:当我调整范围时,绘图几乎毫无意义,因为你几乎看不到任何东西。当我坚持使用上述规则范围时,除了右侧y上的直方图外,一切正常:

无警告打印:

作者分别是。一位评论员也面对了这一点,并描述了在这种情况下该怎么办。不幸的是,我不明白:

当+/-2SD线超出默认打印限制时
它们需要明确地预先说明,以使直方图正确对齐


如何明确说明导致范围问题的数据点?或者换句话说:这意味着什么?

不幸的是,使用ylim()参数时,ggmargin会出现问题。因此,您必须明确地预先声明上下边距。在您的情况下:删除ylim行

  ylim(mean(my.data$diff) - 3*sd.diff, mean(my.data$diff) + 3*sd.diff) +
并保持预定的线路

 geom_hline(yintercept = mean(my.data$diff) + 3*sd.diff, linetype = 2) +
 geom_hline(yintercept = mean(my.data$diff) - 3*sd.diff, linetype = 2) +
  ylim(mean(my.data$diff) - 3*sd.diff, mean(my.data$diff) + 3*sd.diff) +
 geom_hline(yintercept = mean(my.data$diff) + 3*sd.diff, linetype = 2) +
 geom_hline(yintercept = mean(my.data$diff) - 3*sd.diff, linetype = 2) +