gpt4 book ai didi

r - ggplot2 geom_area 重叠而不是堆叠

转载 作者:行者123 更新时间:2023-12-05 00:07:05 29 4
gpt4 key购买 nike

我正在尝试生成一个堆叠区域图,但是 ggplot 会生成重叠区域。我试过其他与我类似的例子,但它们有效而我的无效。

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

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

我尝试了不同的立场论据,但无济于事。

我怎样才能得到堆叠的区域?

最佳答案

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

例如,type=V 在 2010 年 1 月 17 日有访问者 = 20,在 2010 年 1 月 19 日有访问者 = 22,所以我也会为 2010 年 1 月 18 日添加访问者 = 20。

我的数据是通过使用 reshape 包中的 cast 生成的,因此只需将 add.missing=T 设置为标志即可解决我的问题:

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

关于r - ggplot2 geom_area 重叠而不是堆叠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2363881/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com