Как изменить отображение шкалы переменной «часы: минуты» на графике? - PullRequest
1 голос
/ 30 октября 2019

Я пытаюсь изменить масштаб моего графика по оси Y.

Основная трудность заключается в том, что моя ось Y - это не обычные целые числа, а переменная типа часы: минуты.

Myпроблема в том, что я не знаю, как правильно разбить или изменить масштаб моей оси Y.

Давайте посмотрим на воспроизводимый пример:

# Let's create 15 observations: 15 betime sleep on 15 different days
data <- data.frame(dates = as.POSIXct(c("2019-07-21 01:00:00","2019-07-22 00:45:00","2019-07-23 02:30:00","2019-07-24 23:30:00","2019-07-25 22:45:00","2019-07-26 21:45:00","2019-07-27 23:45:00","2019-07-28 00:45:00","2019-07-29 01:30:00","2019-07-30 02:45:00","2019-07-31 02:35:00","2019-08-01 00:20:00","2019-08-02 23:55:00","2019-08-03 23:15:00","2019-08-04 01:15:00")))

# Let's create a variable that only takes hours:minutes
data$bedtimes <- format(data$date, format = "%H:%M:%S")
data$bedtimes <- as.POSIXct(data$bedtimes, format = "%H:%M:%S")

# Now let's plot the hours:minutes bedtime for each day
plot(data$date,data$bedtimes, xlab = "Date in Month Day", ylab = "Bedtime in Hours and minutes")

Теперь вотВывод нашего графика:

enter image description here

Как вы можете видеть, ось Y (часы и минуты в течение ложа) начинается снизу с полуночи 00:00 до 24:00 сверху.

Моя проблема в том, что этот график на самом деле не имеет смысла визуально.

Я бы хотел, чтобы моя ось Y начиналась с, скажем, 12:00 (24-часовой тип времени) внизу, затем к полуночи 00:00 в середине и, наконец, 11:59 вверху. Таким образом, снизу вверх у нас фактически 24 часа, но не в том же порядке, что и раньше.

Как я могу это сделать?

1 Ответ

1 голос
/ 30 октября 2019

Это ближе к тому, что вы ищете? Начните с исходных данных без добавления времени сна:

hours <- as.numeric(format(data$date, "%H")) + as.numeric(format(data$date, "%M"))/60
flip <- ifelse(hours > 12, hours - 12, hours + 12)
oldp <- par(mar=c(5.1, 6.1, 4.1, 2.1))
plot(data$date, flip, , ylim=c(0, 24), xlab="Date", ylab="", yaxt="n")
title(ylab="Bedtime", line=5)
axis(2, c(0, 6, 12, 18, 24), c("Noon", "6pm", "Midnight", "6am",
     "Noon"), las=1)
abline(h=12, lty=2)

Plot

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