2010-03-02 142 views
4

我试图生成一个堆积区域图,但相反,ggplot使重叠区域。我尝试了其他类似于我的例子,但它们工作,而我的例子并不工作。ggplot2 geom_area重叠而不是堆叠

> cx 
     date type visitors 
1 2009-11-23 A  2 
2 2010-01-07 A  4 
3 2010-01-09 A  6 
4 2010-02-07 A  8 
5 2009-12-02 B  2 
6 2009-12-03 B  4 
7 2009-12-11 B  6 
8 2010-01-20 B  8 
9 2010-01-26 B  10 
10 2010-01-30 B  11 
11 2010-02-01 B  12 
12 2009-12-07 LU  2 
13 2009-12-28 LU  4 
14 2010-01-27 LU  7 
15 2010-02-04 L  1 
16 2010-02-22 L  2 
17 2009-11-14 O  2 
18 2009-11-27 O  4 
19 2010-01-11 O  6 
20 2010-01-13 O  8 
21 2010-02-10 O  9 
22 2009-11-24 R  2 
23 2009-12-01 R  4 
24 2009-12-13 R  6 
25 2009-12-14 R  8 
26 2010-01-03 R  10 
27 2010-01-16 R  12 
28 2010-02-06 R  13 
29 2010-02-08 R  15 
30 2009-11-15 T  2 
31 2009-11-19 T  4 
32 2009-11-25 T  6 
33 2009-11-26 T  8 
34 2009-12-09 T  10 
35 2009-12-10 T  12 
36 2009-12-15 T  14 
37 2009-12-19 T  16 
38 2009-12-22 T  18 
39 2010-02-23 T  19 
40 2010-02-24 T  20 
41 2010-01-21 Tr  2 
42 2010-01-23 Tr  4 
43 2010-01-24 Tr  6 
44 2010-01-06 U  2 
45 2009-11-09 V  2 
46 2009-11-18 V  4 
47 2009-12-16 V  6 
48 2009-12-23 V  8 
49 2009-12-25 V  10 
50 2010-01-02 V  12 
51 2010-01-12 V  14 
52 2010-01-14 V  16 
53 2010-01-15 V  18 
54 2010-01-17 V  20 
55 2010-01-19 V  22 
56 2010-01-25 V  25 
57 2010-02-05 V  26 
> ggplot(cx) + geom_area(aes(x=date, y=visitors, fill=type), position="stack") 

这给出了一个情节,其中每种类型被绘制为自己的区域,并且这些被覆盖而不是堆叠。如果我对它们进行排序,那么我会在较大的范围内获得一系列较小的区域,但这不是我所追求的。

我已经尝试了不同的立场的参数,无济于事。

如何获得堆叠区域?

回答

7

我找到了解决方案。问题是每个日期都没有每种类型的值,即有某些类型的类型没有条目的x值。

例如,2010-01-17类型= V的游客数= 20,2010-01-19的游客数= 22,所以我会在2010-01-18增加游客数= 20。

cx <- cast(visitors.melt, type+date~., length, add.missing=T) 
names(cx)[3] <- "visitors" 
cx <- ddply(cx, .(type), function(x) data.frame(date=x$date, visitors=cumsum(x$visitors))) 

我的数据是通过使用从重塑包铸,所以只设置add.missing = T作为一个标志固定我的问题产生