2017-01-13 3 views
0

У меня есть следующий набор данных:стек график временных рядов в R

Percentage Date Category 
0.001546278 1 A 
0.002334523 2 A 
0.00089928 3 A 
0.00205846 4 A 
0.000994036 1 B 
0.000961275 2 B 
6.00E-04 3 B 
0.001132153 4 B 
0.000773139 1 C 
0.000411975 2 C 
0.00039968 3 C 
0.000205846 4 C 

, который я использую, чтобы сделать график по:

ggplot(data.frame(data), aes(x = Date, y = Percentage, fill = Category)) + 
    geom_area(position = 'stack') 

, что я хотел бы, чтобы получить в x- оси вместо даты 1-4: то есть: январь 2001, февраль 2002 г., март 2002 г. и апрель 2002 г. Любой формат даты будет действовать, пока появятся месяц и год. Любые предложения о том, как это сделать?

ответ

1

Вы могли бы сделать

ggplot(data.frame(data), aes(x = as.Date("2000-12-01")+months(Date), y = Percentage, fill = Category)) + 
    geom_area(position = 'stack') + 
    scale_x_date(date_labels = "%b %Y") 
+0

Большое спасибо за Ваш комментарий. К сожалению, я придумал следующую ошибку: «Ошибка в UseMethod (« months »): не применимый метод для« месяцев », применяемый к объекту класса« c («целое», «числовое») ». Я попытался изменить данные в соответствии с датой в правильном формате, но кажется, что он разрешает только числовой формат. –

+1

Вы правы. Нужно заранее загружать 'library (lubridate)'. Я ошибочно полагал, что базовые 'месяцы' тоже обрабатывают его. – lukeA

2

Используйте yearmon() из пакета зоопарка.

Например: Замены:

 x = as.yearmon(as.Date("2015-12-25", %Y-%m-%d),"%y-%m") 
+0

Как бы выглядела функция? –

+0

'as.yearmon (" 2015-12-25 ")' будет достаточно. Также смотрите '? Scale_x_yearmon' –