R时间序列折线图

时间:2020-04-03 13:10:00

标签: r

我希望咖啡的记录从记录的开始到末尾分配一个折线图。我想确定每天购买的饮料。每天相应的数字应显示在整个时间范围内。 读完数据集后,我首先遇到了日期/时间格式的问题。 我怀疑我没有将它们转换为正确的格式。

然后我尝试计算每天的咖啡消耗量。然后我发现我的公式始终使用2020年,尽管可以追溯到2019年。

所以我的情节看起来很有趣,没有年份可以找到。

有人可以帮我吗?

非常感谢!

链接到数据集:https://github.com/Skruff80/Getting-started/blob/master/ProductList.csv


coffeedata <- fread("C:/temp/ProductList.csv")

str(coffeedata)
head(coffeedata)
coffeedata$Date = as.Date(coffeedata$Date, "%d.%m.%y")
head(coffeedata)

countcoffee <- function(timeStamps) {
  Dates <- as.Date(strftime(coffeedata$Date, "%Y-%m-%d"))
  allDates <- seq(from = min(Dates), to = max(Dates), by = "day")
  coffee.count <- sapply(allDates, FUN = function(X) sum(Dates == X))
  data.frame(day = allDates, coffee.count = coffee.count)}

daylicounter = countcoffee(df$message.date)

lines(daylicounter)

该图应类似于链接中的图片。 https://github.com/Skruff80/Getting-started/blob/master/example.png

感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

使用ggplot2

您可以使用ggplot2库来做到这一点,如以下代码所示:

library(ggplot2)
ggplot(daylicounter, aes(day, coffee.count)) +
  geom_line(color = "orange", size = 1) + 
  scale_x_date(breaks = "1 month", date_labels = "%Y-%m-%d")

这是输出图:

Graph

修改

如果需要自定义中断向量,则可以使用如下代码:

library(ggplot2)
break.vec <- seq(from = min(daylicounter$day), to = max(daylicounter$day),
                   by = "month")

ggplot(daylicounter, aes(day, coffee.count)) +
   geom_line(color = "orange", size = 1) + 
   scale_x_date(breaks = break.vec, date_labels = "%d-%m-%Y")

希望获得帮助。

答案 1 :(得分:0)

可以解决X轴的错误。正如我已经怀疑的那样,重新格式化日期就是错误。 我用过

%y

代替

%Y
coffeedata$Date = as.Date(coffeedata$Date, "%d.%m.%Y")