使用以 X 轴为因素的 `geom_line()`

Posted

技术标签:

【中文标题】使用以 X 轴为因素的 `geom_line()`【英文标题】:Using `geom_line()` with X axis being factors 【发布时间】: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,等等?

【问题讨论】:

【参考方案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'

以上是关于使用以 X 轴为因素的 `geom_line()`的主要内容,如果未能解决你的问题,请参考以下文章

R数据可视化-4 折线图

在 MATLAB 中绘制频率响应,x 轴为对数刻度

x轴为工作日循环填充

在 ggplot 中插入一个 .png 文件,x 轴为日期

Geom_line 基于 y 轴连接几何点?

剪辑/限制 Geom_Line 绘图