Sto utilizzando ggplot2 per tracciare i seguenti dati utilizzando geom_area
. I valori sono progettati per essere un'immagine speculare dell'asse x. Ma la fine della trama per il cane non è speculare.ggplot2 geom_area traccia in modo imprevisto (finisce nel posto sbagliato)
Ma, come si può vedere da questo frame di dati cane dovrebbe terminare su x = 100 ey = 0 ma sembra finire su x = 100 ey = 100 (vedi ultima riga)
Come posso fare esattamente il gatto specchio del cane?
x y animal
1 100.0 100 cat
2 90.0 89 cat
3 84.0 85 cat
4 55.5 60 cat
5 28.3 37 cat
6 27.0 32 cat
7 18.0 25 cat
8 0.0 0 cat
9 0.0 100 dog
10 10.0 89 dog
11 16.0 85 dog
12 44.5 60 dog
13 71.7 37 dog
14 73.0 32 dog
15 82.0 25 dog
16 100.0 0 dog
dat <- structure(list(x = c(100, 90, 84, 55.5, 28.3, 27, 18, 0, 0, 10,
16, 44.5, 71.7, 73, 82, 100), y = c(100, 89, 85, 60, 37, 32,
25, 0, 100, 89, 85, 60, 37, 32, 25, 0), animal = c("cat", "cat",
"cat", "cat", "cat", "cat", "cat", "cat", "dog", "dog", "dog",
"dog", "dog", "dog", "dog", "dog")), class = "data.frame", row.names = c(NA,
-16L), .Names = c("x", "y", "animal"))
library(ggplot2)
ggplot(dat) + theme_bw() +
geom_area(aes(x=x, y=y, group=animal, fill=animal), alpha=.3)
Stranamente, se mi sottoinsieme proprio cane è correttamente trame:
ggplot(subset(dat, animal=="dog")) + theme_bw() +
geom_area(aes(x=x, y=y, group=animal, fill=animal), alpha=.3)
'geom_line' corretto funzionamento, che può essere un indizio, così come sottoinsiemi solo 'gatto'. Sto usando ggplot2_1.0.0 –
Non sono sicuro se questo abbia qualche significato/rilevanza, ma se rimuovi ad esempio la prima riga dei dati, funziona come previsto (ma ovviamente, il gatto sembra diverso a causa del punto dati mancante. .) –
aggiungi 'order = y' a' aes' o 'dat [ordine (dat $ y),]' (PS non ho spiegazioni;)) – user20650