edd*_*ddi 12 r ggplot2 cumulative-sum
我正在学习使用ggplot2,我正在寻找ggplot2能够重现以下base::plot结果的最小代码.我已经尝试了一些东西,它们最终都变得非常长,所以我正在寻找最小的表达式,理想情况下我想在x轴上设置日期(plot下面没有这些日期).
df = data.frame(date = c(20121201, 20121220, 20130101, 20130115, 20130201),
val = c(10, 5, 8, 20, 4))
plot(cumsum(rowsum(df$val, df$date)), type = "l")
Run Code Online (Sandbox Code Playgroud)
Aru*_*run 27
试试这个:
ggplot(df, aes(x=1:5, y=cumsum(val))) + geom_line() + geom_point()
Run Code Online (Sandbox Code Playgroud)

geom_point()如果您不想要它,请删除.
编辑:由于您需要绘制数据,因此x标签是日期,您可以使用x=1:5并使用scale_x_discrete来设置labels新的data.frame.服用df:
ggplot(data = df, aes(x = 1:5, y = cumsum(val))) + geom_line() +
geom_point() + theme(axis.text.x = element_text(angle=90, hjust = 1)) +
scale_x_discrete(labels = df$date) + xlab("Date")
Run Code Online (Sandbox Code Playgroud)

由于您说val"日期"的数量超过1 ,因此您可以先使用它们进行聚合plyr,例如.
require(plyr)
dd <- ddply(df, .(date), summarise, val = sum(val))
Run Code Online (Sandbox Code Playgroud)
然后,您可以通过更换使用相同的命令继续x = 1:5用x = seq_len(nrow(dd)).
几年后,我决定做:
ggplot(df, aes(as.Date(as.character(date), '%Y%m%d'), cumsum(val))) + geom_line()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
23335 次 |
| 最近记录: |