Временной ряд в R с ggplot2 - PullRequest
       15

Временной ряд в R с ggplot2

3 голосов
/ 11 февраля 2011

Я новичок в ggplot2 и у меня довольно простой вопрос относительно графиков временных рядов.

У меня есть набор данных, в котором данные структурированы следующим образом.

      Area 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007
  MIDWEST   10    6   13   14   12    8   10   10    6    9

Как создать временной ряд, когда данные структурированы в этом формате.

С пакетом reshape я могу просто изменить данные так:

totmidc <- melt(totmidb, id="Area")
totmidc

    Area    variable  value
1  MIDWEST     1998    10
2  MIDWEST     1999     6
3  MIDWEST     2000    13
4  MIDWEST     2001    14
5  MIDWEST     2002    12
6  MIDWEST     2003     8
7  MIDWEST     2004    10
8  MIDWEST     2005    10
9  MIDWEST     2006     6
10 MIDWEST     2007     9

Затем запустите следующий код, чтобы получить нужный график.

ggplot(totmidc, aes(Variable, Value)) + geom_line() + xlab("") + ylab("")

Однако возможно ли построить график временных рядов из первого объект, в котором столбцы представляют годы.

Ответы [ 2 ]

4 голосов
/ 11 февраля 2011

Какую ошибку выдает ggplot2? Кажется, на моей машине работает следующее:

Area <-  as.numeric(unlist(strsplit("1998 1999 2000 2001 2002 2003 2004 2005 2006 2007", "\\s+")))
MIDWEST <-as.numeric(unlist(strsplit("10    6   13   14   12    8   10   10    6    9", "\\s+")))

qplot(Area, MIDWEST, geom = "line") + xlab("") + ylab("")

#Or in a dataframe

df <- data.frame(Area, MIDWEST)
qplot(Area, MIDWEST, data = df, geom = "line") + xlab("") + ylab("")

Возможно, вы также захотите посетить веб-сайт ggplot2 для получения подробной информации о scale_date и др.

3 голосов
/ 12 февраля 2011

Я предполагаю, что под «графиком временных рядов» вы имеете в виду, что хотите получить гистограмму вместо линейного графика?

В этом случае вам нужно лишь немного изменить свой код, чтобы передать правильные параметры в geom_bar (). Статистикой по умолчанию для geom_bar является stat_bin, который вычислит частоту ваших категорий по шкале x. С вашими данными вы хотите переопределить это поведение и использовать stat_identity.

library(ggplot2)

# Recreate data
totmidc <- data.frame(
        Area = rep("MIDWEST", 10),
        variable = 1998:2007,
        value = round(runif(10)*10+1)
)

# Line plot
ggplot(totmidc, aes(variable, value)) + geom_line() + xlab("") + ylab("")

# Bar plot
# Note that the parameter stat="identity" passed to geom_bar()
ggplot(totmidc, aes(x=variable, y=value)) + geom_bar(stat="identity") + xlab("") + ylab("")

Это дает следующий гистограмма:

enter image description here

...