繁体   English   中英

将geom_line(stat ='count')与geom_smooth()与分组变量组合

[英]Combining geom_line(stat='count') with geom_smooth() with a grouping variable

我试图将黄土平滑添加到使用geom_line(stat ='count')创建的ggplot中的分组线图中。

这是一个类似的问题,但答案不适用于分组变量: 将stat_bin与stat_smooth组合

p = ggplot(mtcars, aes(x=cyl, colour=factor(vs))) + 
  geom_line(stat = 'count') 

dat <- layer_data(p)
p + stat_smooth(data = dat, aes(x, y))

我要为每组设置一条平滑线。 使用上面的代码,我得到错误:factor(vs)中的错误:找不到对象'vs'

默认情况下, stat_smooth从原始图继承未指定的美学,在本例中为colour 但是colour是指vs ,它在新的dat数据帧中不是变量,因此是错误的。 您只需告诉它新的分组变量是colour ,在这种情况下就是colour 请注意,我还要添加method="lm", se=FALSE ,因为这里没有足够的数据点可用于默认平滑。

p <- ggplot(mtcars, aes(x=cyl, colour=factor(vs))) + 
  geom_line(stat = 'count') 
dat <- layer_data(p)
p + stat_smooth(data = dat, aes(x, y, colour=colour), 
                method="lm", se=FALSE)

在此处输入图片说明

但是,您会注意到颜色不匹配,因为变量不匹配。 我怀疑处理此问题的最干净方法是提前在新数据框中获取计数,然后在绘图中使用该计数。

library(tidyverse)
mtcars %>% mutate_at(vars(cyl, vs), factor) %>%
  group_by(cyl, vs) %>% summarize(n=n()) %>%
ggplot() + aes(x=cyl, y=n, colour=vs, group=vs) +
  geom_line() +
  stat_smooth(method="lm", se=FALSE)

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM