2013-07-09 2 views
-1
mydates<-data.frame(effectiveDate=as.Date(c("2012-1-1","2012-1-1","2012-2-1","2012-10-1","2012-4-1","2012-8-1","2013-1-1"))) 

Как построить график гистограммы с использованием ggplot, где бары являются годами? В этом случае будет 13 баров: «Январь 2012» до «Январь 2013», и каждая высота бара будет представлять количество каждой даты, которая приходится на месяц.Как построить гистограмму в ggplot, где мои бункеры год-месяцы

+1

вы могли бы дать нам некоторые данные, чтобы играть так что мы можем показать вам :) –

+1

Я думаю, что данные там уже ...? – Arun

+0

Вы пытались: 'ggplot (data = mydates, aes (x = effectiveDate)) + geom_histogram (stat =" bin ", position =" identity ")' – Arun

ответ

1

Я думаю, что это работает:

Edit: На комментариях ниже

mydates$months <- month.abb[as.numeric(format(mydates[, 1], format = "%m"))] 
mydates$Months <- paste(mydates$months, format(mydates[, 1], format = "%y")) 
mydates$Months <- factor(mydates$Months, levels = paste(month.abb, c(rep(12, 12), 13))) 

ggplot(mydates, aes(Months)) + geom_bar()+ scale_x_discrete(drop=FALSE) + 
    theme(axis.text.x = element_text(angle=90, vjust=.3)) 

Этикетки могут быть скорректированы путем бруски горизонтальные с coord_flip() или с помощью theme(axis.text.x = element_text(angle=90, vjust=.3))

enter image description here

+0

Тайлер, мне кажется, ему нужно 13 баров (с месяцем + год по оси х). – Arun

+0

Это неправильно задает бары, и вы теряете различие между годами. – Ben

+0

@ Вы не указали спецификацию порядка баров. Что правильно? Стивен Few предлагает заказать по частоте, поэтому вы должны быть конкретными. –

1

Это нормально работает:

ggplot(data = mydates, aes(x = effectiveDate)) + geom_bar() 
ggsave(filename = "~/temp/temp.png", width = 6, height = 3, dpi = 150) 

enter image description here

Смежные вопросы