2012-11-25 10 views
10

In entrambi i grafici i punti sembrano diversi, ma perché?Che cosa significa veramente la dimensione in geom_point?

mya <- data.frame(a=1:100) 

ggplot() + 
    geom_path(data=mya, aes(x=a, y=a, colour=2, size=seq(0.1,10,0.1))) + 
    geom_point(data=mya, aes(x=a, y=a, colour=1, size=1)) + 
    theme_bw() + 
    theme(text=element_text(size=11)) 

ggplot() + 
    geom_path(data=mya, aes(x=a, y=a, colour=2, size=1)) + 
    geom_point(data=mya, aes(x=a, y=a, colour=1, size=1)) + 
    theme_bw() + 
    theme(text=element_text(size=11)) 

?aes_linetype_size_shape spiega ...

# Size examples 
# Should be specified with a numerical value (in millimetres), 
# or from a variable source 

Ma nel mio codice ha un aspetto diverso.

risposta

13

Ci sono un paio di cose confuse nel codice. Sembra che tu stia utilizzando la funzione aes in un modo che non è destinato. Oltre al problema size, stai ricevendo più legende e penso che ggplot sia confuso riguardo ai colori.

La funzione aes viene utilizzata per associare l'estetica alle variabili nei dati, ma la si utilizza per impostare l'estetica su una costante. Inoltre, si sta utilizzando la funzione aes per impostare due estetiche separate. Anche se imposti size in una costante, a ggplot2 non piacciono due mappature di dimensioni separate (percorsi e punti). Inoltre, fai lo stesso con una mappatura dei colori.

size e colour sono impostati su valori costanti quindi spostarli all'esterno della funzione aes. Inoltre, rispetto a size del percorso nel primo grafico, è probabilmente più sicuro aggiungere una variabile size al frame dati. (Ho modificato un po 'i dati in modo che sia i punti che i percorsi siano visibili.) E come previsto, viene disegnata una legenda nel primo grafico.

library(ggplot2) 
mya <- data.frame(a=1:10, size = seq(10, 1, -1)) 

ggplot() + 
    geom_path(data=mya, aes(x=a, y=a, size=size), colour = 2) + 
    geom_point(data=mya, aes(x=a, y=a), colour = 1, size = 3) + 
    theme_bw() + 
    theme(text=element_text(size=11)) 

ggplot() + 
    geom_path(data=mya, aes(x=a, y=a), colour = 2, size = 1) + 
    geom_point(data=mya, aes(x=a, y=a), colour = 1, size = 3) + 
    theme_bw() + 
    theme(text=element_text(size=11)) 

enter image description here