ggplot逐年比较

时间:2012-11-22 22:10:15

标签: r ggplot2

我想生成一个比较不同年份获得的数据的图。目标是在x轴上 12个月,并使用每年的值绘制不同的行

我正在使用的数据框是下一个:

   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

我的情节代码是:

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"));

但是从2009年到2012年的 x轴48个月,并且一行显示每个值(每个值不是每年的不同行)几个月)。

你能帮我解决一下这个问题吗? (我是R的新人,将不胜感激任何帮助。)

提前感谢您的回答!

1 个答案:

答案 0 :(得分:6)

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