То, что вы видите, это то, что R не знает, как угадать подходящий диапазон для одной точки.Обычно он расширяет диапазон данных на 4% от диапазона (посмотрите на ?par
и ищите 'xaxs'
), но с одной точкой, которая ничего не значит.
Итак, мынужно сказать, что ylim
использовать.(Точно так же ваша ось x также нуждается в некотором руководстве.)
Поддельные данные:
set.seed(2)
coords <- data.frame(tm = Sys.time() + runif(20, -3e7, 3e7))
coords$month <- as.integer(format(coords$tm, format = "%m"))
coords$format_time <- format(coords$tm, format = "%l:%M:%S %p")
head(coords)
# tm month format_time
# 1 2018-10-24 20:15:17 10 8:15:17 PM
# 2 2019-10-19 05:07:04 10 5:07:04 AM
# 3 2019-07-21 14:19:22 7 2:19:22 PM
# 4 2018-10-13 03:44:57 10 3:44:57 AM
# 5 2020-04-03 21:32:22 4 9:32:22 PM
# 6 2020-04-03 15:27:59 4 3:27:59 PM
"Нормальный" график выглядит нормально:
month <- coords$month
time <- strptime(coords$format_time, format = "%l:%M:%S %p")
plot(month, time)
но одноточечный не:
sub <- coords[1,]
month <- sub$month
time <- strptime(sub$format_time, format = "%l:%M:%S %p")
plot(month, time)
Итак, мы исправим этоуказав xlim
и ylim
аргументы.В этом случае, поскольку я предполагаю, что это год месяцев (x) и дня времен (y), я могу жестко их кодировать, но в других ситуациях вы можете просто вычесть / добавитьнебольшое количество из одного имеющегося у вас значения:
sub <- coords[1,]
month <- sub$month
time <- strptime(sub$format_time, format = "%l:%M:%S %p")
xlim <- c(1, 12)
ylim <- strptime(c("12:00:00 AM", "11:59:59 PM"), format = "%l:%M:%S %p")
plot(month, time, xlim = xlim, ylim = as.numeric(ylim))
Вам нужно только указать ylim
, чтобы ответить на этот вопрос, но без настройки xlim=
здесь, предыдущая ось х охватывала 6-14, не годится для месяцев.Также следует отметить, что мне пришлось привести ylim
к числовому значению для графика, он не работал с ylim
в чистом виде POSIXt
... не знаю точно, почему это так, но это не такотвлекать от полезности участка в целом.