如何强制geom_smooth为ggplot渲染?

时间:2019-01-02 14:22:45

标签: r ggplot2

即使在一个组只有一个或两个值的情况下,我也想强制为该多组图绘制更平滑的线条。见下文:

library(ggplot2)

set.seed(1234)
df <- data.frame(group = factor(c(rep("A",3),rep("B",2),"C")), x = c(1,2,3,1,2,2), value = runif(6))
ggplot(df,aes(x=x,y=value,group=group,color=group))+
  geom_point(size=2)+
  geom_line(stat="smooth",method = "loess",size = 2, alpha = 0.3)

enter image description here

这是我想看的输出:

enter image description here

1 个答案:

答案 0 :(得分:3)

该呼叫给出了许多警告,可以由warnings()检查。警告之一是“ 零宽度邻域。使跨度变大”。

因此,我尝试使用附加的span = 1参数操作OP的代码:

library(ggplot2)
ggplot(df, aes(x = x, y = value, group = group, color = group)) +
  geom_point(size = 2) +
  geom_line(
    stat = "smooth",
    method = "loess",
    span = 1,
    size = 2,
    alpha = 0.3
  )

分别获得了只有3和2个数据点的A和B组的平滑曲线。

enter image description here