[英]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.