Линейный график временных рядов R - PullRequest
1 голос
/ 03 апреля 2020

Я бы хотел, чтобы запись кофе распределяла линейную диаграмму от начала записи до конца. Я хотел бы определить напитки, купленные за день. Соответствующее число в день должно отображаться в течение всего периода времени. После прочтения набора данных у меня возникли первые проблемы с форматом даты / времени. Я подозреваю, что я не приводил их в правильном формате.

Затем я попытался подсчитать потребление кофе в день. Затем я узнал, что с моей формулой всегда используется 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 голосов
/ 05 апреля 2020

Может исправить ошибку с осью X. Как я уже подозревал, переформатирование даты было ошибкой. Я использовал

%y

вместо

%Y
coffeedata$Date = as.Date(coffeedata$Date, "%d.%m.%Y")
0 голосов
/ 03 апреля 2020

Использование 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")

Надеюсь, эта помощь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...