我有从2012-01-01到现在(2015-11-20)的1417天销售数据。我无法弄清楚如何使用一年(1月1日 - 12月31日)轴和每年的销售额在同一个一年的窗口,即使使用ggplot' s { {1}}选项。
总销售额为color = as.factor(Year)
int
我已使用head(df$Total.Sales)
[1] 495 699 911 846 824 949
包将Year从原始Day变量中拉出来。
lubridate
但因为Day包含年份信息
df$Day <- as.Date(as.numeric(df$Day), origin="1899-12-30")
df$Year <- year(df$Day)
ggplot仍在绘制三年而不是将它们同步到同一时间段(一年,一年):
sample(df$Day, 1)
[1] "2012-05-05"
答案 0 :(得分:1)
我创建了一些示例数据,如下所示
set.seed(1234)
dates <- seq(as.Date("2012-01-01"), as.Date("2015-11-20"), by = "1 day")
values <- sample(1:6000, size = length(dates))
data <- data.frame(date = dates, value = values)
顺便提一下,提供类似的东西是可重复的例子。
然后我准备一些额外的列
library(lubridate)
data$year <- year(data$date)
data$day_of_year <- as.Date(paste("2012",
month(data$date),mday(data$date), sep = "-"))
最后几行肯定是罗兰在评论中的意思。他选择闰年是正确的,因为它包含所有可能的日期。正常的一年将错过2月29日。
现在情节是由
生成的library(ggplot2)
library(scales)
g <- ggplot(data, aes(x = day_of_year, y = value, color = as.factor(year))) +
geom_line() + scale_x_date(labels = date_format("%m/%d"))
我打电话给scale_x_date
来定义没有年份的x轴标签。这取决于包date_format
中的函数scales
。字符串"%m/%d"
定义日期格式。如果您想了解有关这些格式字符串的更多信息,请使用?strptime
。
该图如下:
您可以立即看到此表示可能存在的问题。在这个情节上很难区分任何东西。但当然这也与我的样本数据差异很大的事实有关。您的数据可能看起来不同。否则,请考虑使用分面(请参阅?facet_grid
或?facet_wrap
)。