【问题标题】:Using `geom_line()` with X axis being factors使用以 X 轴为因素的 `geom_line()`
【发布时间】:2013-04-27 08:58:00
【问题描述】:

假设我有一个数据框:

hist <- data.frame(date=Sys.Date() + 0:13,
                   counts=1:14)

我想根据工作日绘制总计数,使用 line 连接点。 以下将 points 放在每个值上:

hist <- transform(hist, weekday=factor(weekdays(date),
                                       levels=c('Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday')))
ggplot(hist, aes(x=weekday, y=counts)) + geom_point(stat='summary', fun.y=sum)

当我尝试用一​​条线 (geom_line()) 将它们连接起来时,ggplot 抱怨每组只有一个数据观察值,因此无法在这些点之间画一条线。

我明白这一点 - 它试图为每个工作日画一条线(因子水平)。

我怎样才能让 ggplot 假装(仅出于该行的目的)工作日是数字的?也许我必须有另一列day_of_week,即星期一为 0,星期二为 1,等等?

【问题讨论】:

    标签: r ggplot2


    【解决方案1】:

    如果我理解正确,指定group=1 并添加stat_summary() 层应该可以解决问题:

    ggplot(hist, aes(x=weekday, y=counts, group=1)) +
    geom_point(stat='summary', fun.y=sum) +
    stat_summary(fun.y=sum, geom="line")
    

    【讨论】:

    • 太棒了! group=1 的目的是什么(为什么是 1?这是做什么的?)
    • 哦,我想我找到了。 here (ggplot2 documentation)
    • 如果你想一次绘制多条线,你应该指定`group=variableWhichDefinesLines'
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-05
    • 2018-11-18
    • 1970-01-01
    • 1970-01-01
    • 2020-10-19
    • 1970-01-01
    相关资源
    最近更新 更多