控制平滑度和置信区间的透明度

15

我指的是两年前这个SO问题,涉及ggplot:调整stat_smooth线条的透明度(alpha),而不仅是置信区间的透明度

第一种建议的方法允许单独设置置信区间的alpha透明度:

ggplot(head(airquality, 60), aes(x=Day, y=Temp, color=factor(Month))) +
  geom_point() + stat_smooth(method = "lm", se=TRUE, alpha=1.0)

enter image description here

第二种方法可以设置线本身的透明度,但同时会失去置信区间,即使使用se=TRUE也是如此:

ggplot(head(airquality, 60), aes(x=Day, y=Temp, color=factor(Month))) +
  geom_point() + geom_line(stat='smooth', method = "lm", se=TRUE, alpha=0.3)

在这里输入图片描述

我的问题:如何控制平滑线和置信区间的透明度?

2个回答

16

这会使模型计算两次。但通常情况下这不应该对性能造成影响。

ggplot(head(airquality, 60), aes(x=Day, y=Temp, color=factor(Month))) +
  geom_point() + 
  geom_ribbon(stat='smooth', method = "lm", se=TRUE, alpha=0.1, 
              aes(color = NULL, group = factor(Month))) +
  geom_line(stat='smooth', method = "lm", alpha=0.3)

结果图


1
谢谢,这很好用!我想没有直接的方法可以做到这一点。注意:我认为在geom_ribbon中可以删除se=TRUE吗? - agenis
3
2017年以来,您是否了解到直接解决此问题的方法?绕过解决方法似乎是不符合直觉的。 - Dan
1
@Dan,你可以发布一个新答案吗? - agenis
2
似乎geom_ribbonmethod="loess"时无法工作。 - iago

0

这是我知道的最简单的方法。如果您有更具体的颜色比例尺,也可以使用scale_color_manual

ggplot(head(airquality, 60), aes(x=Day, y=Temp, 
                                 color=factor(Month))) +
  geom_point() + 
  geom_smooth(alpha=0.2) + #toggle this alpha for error bar opacity
  scale_color_viridis(discrete=TRUE, alpha = 0.9) + #toggle this alpha for line opacity 
  theme_minimal()

欢迎提出问题、评论或改进意见。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接