Возникли проблемы с решеткой и построением графиков событий в виде линейных графиков временных рядов. - PullRequest
0 голосов
/ 20 февраля 2012

У меня есть таблица данных, которую я пытаюсь использовать решетку в R для построения графика. Таблица содержит подсчеты определенного события, которое происходит на единицу по дате (который я сгруппировал по первому дню соответствующего месяца), отсортированные по дате.

> data
      Unit       Date Count
1   Unit14 2005-01-01     1
2   Unit19 2005-01-01     0
3   Unit13 2006-01-01     8
4   Unit17 2006-01-01     0
5   Unit13 2007-01-01     0
6   Unit14 2007-01-01     4
7   Unit19 2007-01-01     1
8    Unit5 2007-01-01     0
9    Unit9 2007-01-01     1
10  Unit13 2008-01-01     0
...

Я использую xyplot в решетке для построения графика, и он прекрасно работает, если я просто рисую точки, в которых они произошли. Я получаю сетку изображений по единицам, изображая каждое событие с осью X в качестве даты и осью Y в качестве Dount.

> xyplot(Count~Date | Unit, data)

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

> xyplot(Count~Date | Unit, data, col="blue",type="l")

Как я могу получить это в виде временного ряда?

Я все еще довольно плохо знаком с графикой с помощью R, поэтому любая помощь будет принята с благодарностью. Спасибо.

1 Ответ

1 голос
/ 20 февраля 2012

Точки нарисованы и объединены в порядке их появления, не в хронологическом порядке. Эти артефакты исчезнут, если вы отсортируете свои данные. до построения.

# Sample data
n <- 20
k <- 3
d <- data.frame(
  Unit = rep(LETTERS[1:k], each=n),
  Date = rep(sample(seq.Date(Sys.Date(), length=n, by=1)), k),
  Count = rpois(k*n,10)
)
# Unorderd data    
xyplot(Count ~ Date | Unit, data=d, type="l")
# Ordered data
xyplot(Count ~ Date | Unit, data=d[order(d$Date),], type="l")

Обратите внимание, что это не происходит с ggplot2 (если только вы явно не запросите этот артефакт в форме звезды):

library(ggplot2)
ggplot(d, aes(Date, Count)) + geom_line() + facet_grid(~Unit)
...