2013-03-17 103 views
1

我想绘制一个图表显示按会计年度的数据。我遇到的问题是ggplot显示了一个不存在于包含信息的数据框中的点,而不是绘制另一个确实存在的点。你能请ggplot的主人帮助我吗?非常感谢你!!scale_x_discrete不显示数据某些数据和隐藏另一个

的代码是:

plot = ggplot(data = headcountPerMonth, 
       aes(x = Month.Number, 
        y = Headcount, 
        group = Fiscal.Year, 
        colour = Fiscal.Year)) + 
     geom_line() +  
     geom_point() + 
     labs(colour = "Fiscal year") + 
     scale_x_discrete(
     name = "Month", 
     labels = headcountPerMonth$Month.Name 
     ) + 
     scale_y_continuous(name = "Headcount"); 
    print(plot); 

情节是下一个。正如你所看到的,有一个值为a Month = March,Fiscal.Year = 2012,但不在Month = June,Fiscal.Year = 2012

enter image description here

从图中的数据是下一个。正如你可以看到没有价值Month = March,Fiscal.Year = 2012,但存在于Month = June,Fiscal.Year = 2012

 Month Headcount Fiscal.Year Month.Number Month.Name 
1 2010-04-01  48  2010   4  abr 
2 2010-05-01  49  2010   5  may 
3 2010-06-01  52  2010   6  jun 
4 2010-07-01  51  2010   7  jul 
5 2010-08-01  51  2010   8  ago 
6 2010-09-01  51  2010   9  sep 
7 2010-10-01  52  2010   10  oct 
8 2010-11-01  54  2010   11  nov 
9 2010-12-01  54  2010   12  dic 
10 2011-01-01  56  2010   1  ene 
11 2011-02-01  56  2010   2  feb 
12 2011-03-01  61  2010   3  mar 
13 2011-04-01  61  2011   4  abr 
14 2011-05-01  59  2011   5  may 
15 2011-06-01  59  2011   6  jun 
16 2011-07-01  61  2011   7  jul 
17 2011-08-01  59  2011   8  ago 
18 2011-09-01  58  2011   9  sep 
19 2011-10-01  59  2011   10  oct 
20 2011-11-01  65  2011   11  nov 
21 2011-12-01  68  2011   12  dic 
22 2012-01-01  72  2011   1  ene 
23 2012-02-01  72  2011   2  feb 
24 2012-03-01  72  2011   3  mar 
25 2012-04-01  77  2012   4  abr 
26 2012-05-01  77  2012   5  may 
27 2012-06-01  80  2012   6  jun 
28 2012-07-01  80  2012   7  jul 
29 2012-08-01  77  2012   8  ago 
30 2012-09-01  81  2012   9  sep 
31 2012-10-01  86  2012   10  oct 
32 2012-11-01  86  2012   11  nov 
33 2012-12-01  85  2012   12  dic 
34 2013-01-01  88  2012   1  ene 
35 2013-02-01  86  2012   2  feb 

在此先感谢您的帮助。

回答

4

由于数据中的变量Month.Number是数字,因此会出现问题。当您在ggplot()中使用时,数值根据您的预期从1:12绘制,而不是从4:121:3绘制。

要解决此问题,您可以将Month.Number转换为期望订单级别的因子(也可以在aes()内使用函数factor())完成。

ggplot(data = headcountPerMonth, 
     aes(x = factor(Month.Number,levels=c(4:12,1,2,3)), 
      y = Headcount, group = Fiscal.Year, 
      colour = as.factor(Fiscal.Year))) + 
    geom_line() +  
    geom_point() + 
    labs(colour = "Fiscal year") + 
    scale_y_continuous(name = "Headcount")+ 
    scale_x_discrete(name = "Month", labels = headcountPerMonth$Month.Name) 
+1

很好用!非常感谢您的帮助! – 2013-03-18 19:36:22

相关问题