ggplot2 geom_area перекрывается, а не накладывается - PullRequest
4 голосов
/ 02 марта 2010

Я пытаюсь сгенерировать график с областями с накоплением, но вместо этого 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")

Это дает график, где каждый тип изображен как его собственная область, и они накладываются друг на друга, а не наложены друг на друга. Если я правильно их отсортирую, то получу серию меньших областей внутри большего размера, но это не то, что мне нужно.

Я пробовал разные аргументы позиции, но безрезультатно.

Как я могу получить сложенные области?

1 Ответ

7 голосов
/ 02 марта 2010

Я нашел решение.Проблема заключается в том, что для каждой даты нет значений для каждого типа, т. Е. Существуют значения x, для которых у определенных уровней типа нет записи.

Например, type = V имеет посетителей =20 на 2010-01-17, и посетителей = 22 на 2010-01-19, поэтому я бы добавил посетителей = 20 на 2010-01-18.

Мои данные были получены с использованием приведения изизмените пакет, поэтому просто установив 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)))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...