Построение нескольких линий на одной диаграмме - PullRequest
0 голосов
/ 02 ноября 2018

У меня есть временной ряд, который показывает электрическую нагрузку на каждые 15 минут в течение одного года. Я уже отфильтровал, чтобы показать только один конкретный день недели. Мой фрейм данных:

Date        Timestamp     Weekday    Load
2017-01-02  00:00:00      Monday     272
2017-01-02  00:15:00       Monday     400
2017-01-02  00:30:00       Monday     699
2017-01-02  00:45:00       Monday     764
2017-01-02  01:00:00       Monday     983
..
..
2017-01-09  00:45:00       Monday     764
2017-01-09  01:00:00       Monday     983
..
2017-12-25  23:45:00      Monday     983

Теперь я хочу построить несколько линейных диаграмм для каждого понедельника на одной диаграмме: ось х = отметка времени ось у = нагрузка

Я пытался с ggplot:

 ggplot(Loadprofile, aes(x= Timestamp, y = Load, color = Date)) + geom_line()

Но это приводит меня к следующей ошибке

Error: Aesthetics must be either length 1 or the same as the data (4992): x, y, colour

То есть вывод, хотя ось x не выглядит непрерывной?

введите описание изображения здесь

Есть предложения?

1 Ответ

0 голосов
/ 03 ноября 2018

Ваша проблема в том, что вам нужно, чтобы Date был фактором, но когда он находится в форме Date, ggplot принимает его как непрерывную переменную.

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

library(tidyverse)
library(lubridate)


DateTimes <- seq(
  from=as.POSIXct("2017-1-02 0:00", tz="UTC"),
  to=as.POSIXct("2017-1-09 23:59", tz="UTC"),
  by="15 min"
)  

DF <- data.frame(Date = as.Date(DateTimes), timestamp = strftime(DateTimes, format="%H:%M:%S"), Weekday = weekdays(DateTimes)) %>% filter(Weekday == "Monday") %>% mutate(load = as.numeric(timestamp)*20 + -as.numeric(timestamp)^2 + rnorm(nrow(DF), sd = 1000) + (as.numeric(Date))) %>% mutate(load = ifelse(Date < ymd("2017_01_4"), load -5000, load))

Как только я это сделаю, если я сделаю следующее:

ggplot(DF, aes(x = timestamp, y = load)) + geom_line(aes(group = as.factor(Date), color = as.factor(Date

Я получаю следующий график

enter image description here

Я думаю, это то, что вам нужно, если вам нужна дополнительная помощь в формировании оси x и легенды, дайте мне знать

Приветствия

...