Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

ggplot year by year comparison

Tags:

r

ggplot2

I want to produce one plot comparing data obtained in different years. The goal is having 12 months on the x axis and drawing different lines with the values for each of the years.

The data frame I'm using is the next one:

   Month             Marg            Fiscal.Year
1  2009-04-01        20904494        2009
2  2009-05-01        43301981        2009
3  2009-06-01        14004552        2009
...
38 2012-05-01        58343271        2012
39 2012-06-01        38723765        2012
40 2012-07-01        77246753        2012

My code of the plot is:

g <- ggplot(data = data, stat="identity", aes(x = Month, y = Marg)) + 
  geom_line() +
  geom_point() +
  geom_smooth(method = "loess") +
  scale_x_date(breaks = "1 month", labels = date_format("%b"));

but this plots in the x axis 48 months from 2009 to 2012, and one line in it showing each of the values (not different lines for each year for each of the months).

Could you please help me solving this issue? (I'm new with R, any help will be appreciated).

Thanks in advance for your answer!

like image 911
Alberto Otero Avatar asked Nov 22 '12 22:11

Alberto Otero


1 Answers

library(ggplot2)
# Sample data
data <- read.table(text = "Month             Marg            Fiscal.Year
                           2009-01-01        20904494        2009
                           2009-02-01        30904494        2009
                           2009-03-01        40904494        2009
                           2009-04-01        30904494        2009
                           2009-05-01        43301981        2009
                           2009-06-01        14004552        2009
                           2009-07-01        24004552        2009
                           2009-08-01        34004552        2009
                           2009-09-01        44004552        2009
                           2009-10-01        54004552        2009
                           2009-11-01        64004552        2009
                           2009-12-01        44004552        2009
                           2012-02-01        58343271        2012
                           2012-03-01        68343271        2012
                           2012-04-01        58343271        2012
                           2012-05-01        58343271        2012
                           2012-06-01        38723765        2012
                           2012-07-01        77246753        2012",
                   header=TRUE, sep="", nrows=18)
data$MonthN <- as.numeric(format(as.Date(data$Month),"%m")) # Month's number
data$Month  <- months(as.Date(data$Month), abbreviate=TRUE) # Month's abbr.

g <- ggplot(data = data, aes(x = MonthN, y = Marg, group = Fiscal.Year, colour=Fiscal.Year)) + 
     geom_line() +
     geom_point() +
     scale_x_discrete(breaks = data$MonthN, labels = data$Month)
g

enter image description here

like image 114
redmode Avatar answered Sep 21 '22 01:09

redmode