scale_x_discrete不显示某些数据的数据并隐藏另一个数据

时间:2013-03-17 19:23:49

标签: r ggplot2

我想绘制一个按财政年度显示数据的图表。我遇到的问题是 ggplot显示的是包含信息的数据框中不存在的一个点,而不是绘制另一个真正存在的点。请问ggplot的主人能帮帮我吗?非常感谢!!

代码是:

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

情节是下一个。正如您所看到的那样,值为Month = March,Fiscal.Year = 2012,但不是月份= 6月,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

提前感谢您的帮助。

1 个答案:

答案 0 :(得分: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)