R + ggplot: графическое изображение неправильного временного ряда

У меня есть данные во многие дни начиная с события. Эти данные выбираются нерегулярно - мои моменты времени похожи 0, 5, 6, 10, 104 дня. У меня нет определенной информации о дате и времени - т.е. Я понятия не имею, когда в реальной жизни событие, которое я изучаю, имело место.

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

p <- ggplot(data,aes(x=time,y=expression))
p <- p + geom_point()

но конечно мои переменные оси X напечатаны друг рядом с другом, так, чтобы расстояние между t=10 и t=104 совпало с t=5 и t=6. Таким образом, я могу составить что-то как

start <- ISOdate(2001, 1, 1, tz = "")
data$time <- start + data$time*60*60*12

который почти работает, но теперь галочки на моей оси X являются ужасно неточными временами даты. Я мог переформатировать их, возможно? Но не видьте так или иначе для создания формата "днями из запуска". И к настоящему времени я гуглил вокруг долгое время с нытьем, чувствуя, что я пропускаю что-то серьезно очевидное. Я?

9
задан Iterator 5 May 2012 в 13:57
поделиться

2 ответа

Похоже, что ваша переменная time - это коэффициент или, возможно, символьный вектор, а не числовое значение! Если вы сделаете data$time <- as.numeric(data$time), это может решить вашу проблему.

ggplot довольно хорошо умеет использовать нужный масштаб для нужных данных. (К сожалению, процедуры импорта данных в R в целом менее умны...)

.
4
ответ дан 4 December 2019 в 15:11
поделиться

Не уверен, что это то, что вы ищете (см. этот связанный вопрос ). Вы можете переформатировать ось и устранить неравномерность с помощью функций scale_x. Например:

p <- qplot(1:3, 1:3, geom='line') 
p + scale_x_continuous("", breaks=1:3, 
        labels = as.Date(c("2010-06-03", "2010-06-04", "2010-06-07")))

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

qplot.zoo <- function(x) {
  if(!inherits(x, "zoo")) stop("x must be a zoo object")
  x.df <- data.frame(dates=index(x), coredata(x))
  x.df <- melt(x.df, id="dates", variable="value")
  ggplot(x.df, aes(x=dates, y=value, group=value, colour=value)) + geom_line() + opts(legend.position = "none")
}
9
ответ дан 4 December 2019 в 15:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: