Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

Create a histogram showing month and year

I can create only a histogram with month or year seperately but not with month and year at the same time in the x-axis.

This is the data I have

Year Month stroke_victims
2005 1 40
2005 2 50
2005 3 48
2005 4 52
2005 5 32
2005 6 21
2005 7 23
2005 8 56
2005 9 43
2005 10 11
2005 11 12
2005 12 15
2006 1 40
2006 2 50
2006 3 48
2006 4 52
2006 5 32
2006 6 21
2006 7 23
2006 8 56
2006 9 43
2006 10 11
2006 11 12
2006 12 15
2007 1 40
2007 2 50
2007 3 48
2007 4 52
2007 5 32
2007 6 21
2007 7 23
2007 8 56
2007 9 43
2007 10 11
2007 11 12
2007 12 15

For year the code is like this

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

ggplot(stroke,aes(x=Year,y=stroke_victims)) + geom_bar(stat="identity") + ggtitle("Stroke victim patterns across the year 2005-2007")

For year the code is like this

ggplot(stroke,aes(x=Month,y=stroke_victims)) + geom_bar(stat="identity") + ggtitle("Stroke victim patterns by Months")

Is it possible to create a code which show january 2005, then february 2005 and so on and with the month name?

>Solution :

There are two ways to get the month name:

stroke$Month_text <- month.abb[stroke$Month]
head(stroke)
#   Year Month stroke_victims Month_text
# 1 2005     1             40        Jan
# 2 2005     2             50        Feb
# 3 2005     3             48        Mar
# 4 2005     4             52        Apr
# 5 2005     5             32        May
# 6 2005     6             21        Jun

or one can convert it to a date and use format(.., format="%B") (see ?strptime for %-codes). I’ll use month.abb for now.

From here, we can facet on Month_text. However, it’s going to be sorted lexicographically which is incorrect:

ggplot(stroke,aes(x=Month_text,y=stroke_victims)) +
  geom_bar(stat="identity") +
  ggtitle("Stroke victim patterns by Months") +
  facet_grid(Year ~ .)

ggplot with incorrect month sort

With any question in that includes "order of …", we use factors.

stroke$Month_text <- factor(month.abb[stroke$Month], levels = month.abb)
ggplot(...) + ... # unchanged from above

ggplot with correct sorted months


Data

stroke <- structure(list(Year = c(2005L, 2005L, 2005L, 2005L, 2005L, 2005L, 2005L, 2005L, 2005L, 2005L, 2005L, 2005L, 2006L, 2006L, 2006L, 2006L, 2006L, 2006L, 2006L, 2006L, 2006L, 2006L, 2006L, 2006L, 2007L, 2007L, 2007L, 2007L, 2007L, 2007L, 2007L, 2007L, 2007L, 2007L, 2007L, 2007L), Month = c(1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L, 12L, 1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L, 12L, 1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L, 12L), stroke_victims = c(40L, 50L, 48L, 52L, 32L, 21L, 23L, 56L, 43L,  11L, 12L, 15L, 40L, 50L, 48L, 52L, 32L, 21L, 23L, 56L, 43L, 11L, 12L, 15L, 40L, 50L, 48L, 52L, 32L, 21L, 23L, 56L, 43L, 11L, 12L, 15L), Month_text = structure(c(1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L, 12L, 1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L, 12L, 1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L, 12L), .Label = c("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"), class = "factor")), row.names = c(NA, -36L), class = "data.frame")
Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading