2012-09-01 17 views
7

Usando ggplot para trazar símbolos área proporcional parece requerir el uso de sqrt() para lograr una verdadera proporcionalidad:símbolos de tamaño proporcional en ggplot

require(ggplot2) 

t <- data.frame(x=rep(c(1:5),5), y=rep(c(1:5),each=5), s=round(seq(1,100,length.out=25))) 
t 
p <- ggplot(data=t, aes(x=x,y=y)) 

# direct size-to-variable mapping 
p + geom_point(aes(size=s), pch=22, fill='#0000FF75', col=NA) + 
    scale_size(range = c(1, 40)) + 
    geom_text(data=t, aes(x=x,y=y,label=s),size=3,vjust=1) 

# proportional area size-to-variable mapping 
p + geom_point(aes(size=sqrt(s)), pch=22, fill='#0000FF75', col=NA) + 
    scale_size(range = c(1, 40)) + 
    geom_text(data=t, aes(x=x,y=y,label=s),size=3,vjust=1) 

enter image description here

Como se puede ver las etiquetas tienen su origen cuando los necesito a mostrar los datos originales He intentado jugar con las opciones scale_size pero nada funciona. Alguien sabe una solución a esto, o ¿Existe tal vez una configuración oscura para lograr el mapeo de tamaño de área proporcional?

Gracias de antemano.

Respuesta

7

Puede utilizar scale_area en lugar de scale_size:

p + geom_point(aes(size=s), pch=22, fill='#0000FF75', col=NA) + 
    scale_area(range = c(1, 40)) + 
    geom_text(data=t, aes(x=x,y=y,label=s),size=3,vjust=1) 

enter image description here


estoy de acuerdo, no es del todo evidente, pero no que obsure bien - no es un ejemplo usando scale_area en la ayuda para ?scale_size.

+0

Gracias @Andrie eso está resuelto. He editado el título de esta pregunta para reflejar la solución. – geotheory

+2

Esto ahora es 'scale_size_area' ya que' scale_area' está en desuso. – geotheory

Cuestiones relacionadas