【发布时间】:2019-05-27 16:13:27
【问题描述】:
我有以下数据:
set.seed(12)
df <- rnorm(1260, 0.06, 0.2)
这些是 5 年的每日回报(1 年 = 252 个工作日),我想做的是在 x 轴上绘制一个带有月份的折线图。基本上,我会让序列 Jan:Dec 在 x 轴上重复五次,21 天是一个月。
我所做的如下:
- 创建一列,月份 jan-dec 重复 5 次
date <- c("Jan", "Feb", "Mär", "Apr", "Mai", "Jun",
"Jul", "Aug", "Sep", "Okt", "Nov", "Dez")
date <- rep(date, 5)
- 画图
df %>%
ggplot(aes(x = date, y = return)) +
geom_line() +
labs(title = "Stock return Chart", y = "return", x = "date")
不幸的是,我收到以下错误:
Error: Aesthetics must be either length 1 or the same as the data (1260): x
【问题讨论】:
-
你能提供一个最小可行的例子吗?即,提供我们可以复制和粘贴的内容以重现您的错误。
-
df不是数据框。建议更好的名称或使其成为数据框。此外,如果没有set.seed语句来设置随机种子,它也是不可重现的。目前尚不清楚您是想要每天一点还是每月一点或每月烛台或条形图。 -
这仅解决了我评论中的一点。
-
我已经提供了答案。但是,我同意@G.Grothendieck 关于您的问题说了些什么并向我们提供了另一件事,例如
df不是数据框。抛开这一点并假设您的数据实际上看起来像这样,我应该说数据清理是在绘制数据之前进行的。 -
@G.Grothendieck 下次我会尽量说得更清楚。我对 R 很陌生,我必须弄清楚什么是数据框,什么不是。
标签: r ggplot2 time-series