Как получить фасет ggplot, работающий со шкалой оси X в чч: мм только (без дат) - PullRequest
0 голосов
/ 01 июня 2019

Я изо всех сил пытаюсь получить диаграмму ggplot, которая включает 2 вещи:

  • фасетку, которая разделяет данные на каждую дату
  • Сохраняет относительную шкалу оси X относительнотолько часы и минуты (ЧЧ: ММ), и сохраняет шкалу оси X между каждой диаграммой переноса фасетов одинаковой ширины.(т. е. 10:00 появляется в одной и той же позиции на каждой фазовой диаграмме)
  • период времени этих диаграмм составляет менее 24 часов, охватывает только 9:00 - 16:00

Все, что я пробовалчтобы получить удобочитаемые метки на оси х, внутри непрерывной переменной «время» возникают огромные промежутки, что, по-видимому, связано с тем, что даты также включаются за кулисы.

Это мой текущий код, который производит фасет, который мне нужен, но имеет нечитаемую ось X.

ggplot(mydata2, aes(x=time, y=pending, color=server, group=date)) +
  geom_point() +
  facet_wrap(~ date)
> class(mydata2$time)
[1] "character"

Я пробовал библиотеку hms.но ggplot, похоже, не знает, что с этим делать.

mydata2$time2 <- lubridate::hms(mydata2$time)

mydata2$time2
   [1] "14H 5M 23S"  "14H 5M 23S"  "14H 5M 42S"  "14H 5M 42S"  "14H 6M 24S"  "14H 6M 24S" 
   [7] "14H 6M 42S"  "14H 6M 42S" .... etc.

Но попытка наметить это не удалась, ниже приведен пустой график ...

ggplot(mydata2, aes(x=time2, y=pending, color=server, group=tradedate)) +
  geom_point() +
  facet_wrap(~ tradedate)

Warning messages:
1: Removed 7390 rows containing missing values (geom_point). 

Как мне достичь двух целей, перечисленных выше?

1 Ответ

0 голосов
/ 05 июня 2019

Я не могу воспроизвести проблему.Вы видите, помогает ли это?В противном случае отправьте образец данных в виде кода.

set.seed(1234)
df <-
  tibble(
    timestamp = seq(
      ymd_hms("2019-01-01 00:00:00"), 
      ymd_hms("2019-01-04 00:00:00"), by = "1000 sec"
    ),
    tradedate = as.Date(timestamp),
    hms = hms::hms(as.numeric(timestamp - floor_date(timestamp, "1 day"), unit="secs"))
  ) %>% 
  mutate(
    pending = sample(11:20, size = n(), replace = TRUE)
  ) 


ggplot(df, aes(x = hms, y = pending, color = factor(tradedate))) +
  geom_point() +
  facet_grid(tradedate~.)

enter image description here

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