使用ggplot平滑线和分类变量?

时间:2018-02-19 15:33:03

标签: r ggplot2 smoothing

我有一个庞大的数据集,这是一个样本。

data.frame(basket_size_group = c("[0,2]", "[0,2]", "(2,4]", "(2,4]", "(4,6]"),
       channel = c("offline", "online/mobile", "offline", "online/mobile", "offline"), 
       pct_trips = c(0.004, 0.038, 0.0028, 0.0082, 0.0037))

通过使用ggplot2,我想用数据绘制平滑线。 X轴是basket_size_group,y轴是pct_tripschannelggplot2中的一个组。问题是basket_size_group是一个分类变量。如何使用channel {/ 1}创建ggplot2平滑线?

1 个答案:

答案 0 :(得分:2)

如果你想平滑地使用黄土,你需要更多的数据。因为它位于stat_smooth()将失败并显示错误:

Computation failed in `stat_smooth()`:
NA/NaN/Inf in foreign function call (arg 5)

除非您指定method = "lm"

您还必须明确stat_smooth()图层并定义group = channel。您也可以在顶层执行此操作,但如果没有stat_smooth,则会尝试使用xcolor进行群组汇总。

# factor it to plot in order
dat$basket_size_group <- factor(dat$basket_size_group, levels = c("[0,2]", "(2,4]", "(4,6]"))

ggplot(dat, aes(basket_size_group, pct_trips, color = channel)) +
    geom_point() +
    stat_smooth(aes(group = channel), method = "lm")

enter image description here