首页 > 解决方案 > 使用虚线在 `stat_smooth` 中追踪 `se` 阴影

问题描述

使用以下方法绘制线性回归stat_smooth

set.seed(10)
df <- data.frame(x=1:10,y=runif(10))
ggplot(df,aes(x=x,y=y))+
geom_point()+
  stat_smooth(method='lm',se=TRUE)
ggsave('/test.eps')

如果我设置se=TRUE,阴影区域的那些不能保存为eps文件。还有其他aes可以描述的区域se吗?如:用两条虚线描出阴影(回归预测的上下界)。我不希望使用阴影。

标签: rggplot2

解决方案


正如您已经注意到的,eps 格式不支持透明度。但是,您可以提供参数来stat_smooth消除透明度(例如alpha=1)并更改 SE 的填充颜色(fill="lightgrey")。

或者,您可以提供除函数之外geom_smooth的其他几何图形stat_smooth。例如,您可以尝试geom="crossbar"(或“errobar”、“linerange”、“pointrange”、“ribbon”)。但是,要获得所需的结果,您可能需要将不同的调用stat_smooth与不同的几何图形结合起来。

最后,您可以手动计算 CI 并使用geom_lines.

library(tidyverse)
set.seed(10)
df <- data.frame(x = 1:10, y = runif(10))

lmdf <- predict(lm(y ~ x, df), interval = "conf") %>%
  as.data.frame %>%
  mutate(x = df$x) %>%
  pivot_longer(1:3, names_to = "line", values_to = "y")

ggplot(df, aes(x = x, y = y)) +
  geom_point() +
  geom_line(data = lmdf, aes(group = line, linetype = line), lwd = 1.2) +
  scale_linetype_manual(values = c("solid", "dashed", "dashed"))

在此处输入图像描述


推荐阅读