У меня есть данные во многие дни начиная с события. Эти данные выбираются нерегулярно - мои моменты времени похожи 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 являются ужасно неточными временами даты. Я мог переформатировать их, возможно? Но не видьте так или иначе для создания формата "днями из запуска". И к настоящему времени я гуглил вокруг долгое время с нытьем, чувствуя, что я пропускаю что-то серьезно очевидное. Я?
Похоже, что ваша переменная time
- это коэффициент или, возможно, символьный вектор, а не числовое значение! Если вы сделаете data$time <- as.numeric(data$time)
, это может решить вашу проблему.
ggplot довольно хорошо умеет использовать нужный масштаб для нужных данных. (К сожалению, процедуры импорта данных в R в целом менее умны...)
.Не уверен, что это то, что вы ищете (см. этот связанный вопрос ). Вы можете переформатировать ось и устранить неравномерность с помощью функций 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")
}