Временная метка разрушает мой график в ggplot2. Как я могу это исправить? - PullRequest
0 голосов
/ 08 марта 2020

У меня есть набор данных с именем X1234, и у меня есть три столбца (num, отметка времени, уровни концентрации), вот пример того, как мои данные выглядят:

num | timestamp      | Levels of Concentration
1   | 4/2/2019 10:45 | 60.80
2   | 4/2/2019 11:00 | 60.08
3   | 4/2/2019 11:15 | 60.08
4   | 4/2/2019 11:30 | 60.26
5   | 4/2/2019 11:45 | 60.26
6   | 4/2/2019 12:00 | 60.44
7   | 4/2/2019 12:15 | 60.44
8   | 4/2/2019 12:30 | 60.44
9   | 4/2/2019 12:45 | 60:62
10  | 4/2/2019 13:00 | 60.62

Когда я использую для построения графика области (ось X = num, ось Y = Levels of Concentration). Я получаю хороший график, однако я хочу сделать это с timestamp , Вот изображение того, как я хотел бы, чтобы мой график выглядел, и код, который я использовал для него:

ggplot(X1234, aes(x = X1234$num, y=X1234$`Levels of Concentration`)) + geom_area()

Идеальный график Ideal graph

Однако мне нужно использовать timestamp как ось х, но когда я это делаю, мой график полностью меняется, и я не понимаю, почему. Вот код, который я использовал для второго графика (x = timestamp, y = Levels of Concentration)

X1234$timestamp_local <- as.Date (X1234$timestamp_local, '%m/%d ')
ggplot(data = X1234, aes (x= X1234$timestamp_local, y = X1234$`Levels of Concentration`)) +  geom_area()

Мой фактический график с использованием метки времени My actual graph using the timestamp

1 Ответ

0 голосов
/ 08 марта 2020

Проблема в том, что num - это число, которое наносится на непрерывную шкалу, а timestamp имеет типовой символ, который приводит к дискретной шкале.

Для построения timestamp на непрерывной масштабировать его нужно правильно привести к классу даты и времени POSIXct, например, используя lubridate::mdy_hm():

library(ggplot2)
library(lubridate)
ggplot(X1234) +
  aes(x = mdy_hm(timestamp), y = `Levels of Concentration`) +
  geom_area()

enter image description here

Данные

X1234 <- readr::read_delim("
num | timestamp      | Levels of Concentration
1   | 4/2/2019 10:45 | 60.80
2   | 4/2/2019 11:00 | 60.08
3   | 4/2/2019 11:15 | 60.08
4   | 4/2/2019 11:30 | 60.26
5   | 4/2/2019 11:45 | 60.26
6   | 4/2/2019 12:00 | 60.44
7   | 4/2/2019 12:15 | 60.44
8   | 4/2/2019 12:30 | 60.44
9   | 4/2/2019 12:45 | 60.62
10  | 4/2/2019 13:00 | 60.62", delim = "|", trim_ws = TRUE)
...