2009-10-02 12 views
8

Dada la siguiente tabla ggplot2:Conde por el factor en la tabla ggplot2

ggplot(my_data, aes(colour=my_factor) + 
       geom_point(aes(x=prior, y=current)) + 
       facet_grid(gender ~ age) 

me gustaría hacer que el tamaño de los puntos sea proporcional a la cuenta de my_factor para esa combinación antes/corriente.

ggplot(my_data, aes(colour=my_factor, 
       size=<something-here>(my_factor)) + 
       geom_point(aes(x=prior, y=current)) + 
       facet_grid(gender ~ age) 

¿Alguna idea?

== == Editar

Aquí hay un ejemplo muy trivial basado en datos mpg. Vamos a definir "great_hwy" como en carretera> 35, y "great_cty" como cty> 25:

mpg$great_hwy[mpg$hwy > 35] <-1 
mpg$great_hwy[mpg$hwy <= 35] <-0 
mpg$great_hwy <- factor(mpg$great_hwy) 

mpg$great_cty[mpg$cty > 25] <- 1 
mpg$great_cty[mpg$cty <= 25] <- 0 
mpg$great_cty <- factor(mpg$great_cty) 

Si dibujamos great_hwy vs great_cty, que no nos dice mucho:

ggplot(mpg) + geom_point(aes(x=great_cty, y=great_hwy)) 

Cómo ¿Podría hacer que los datos sean más grandes en función de la cantidad de puntos x/y? Espero que esto lo aclare, pero avíseme de otra manera.

+1

Una pequeña muestra de datos sería muy útil aquí ... puede elegir uno de los? Datasets si lo desea. – Shane

+1

No entiendo lo que quiere decir con "el recuento de mi_factor para esa combinación anterior/actual". ¿Hay más de un punto de datos para cada x/y? ¿Estás buscando una solución al problema de la sobreimpresión? ¿O quieres decir algo más? – Harlan

+0

@Shane, estoy trabajando en un mejor ejemplo según su sugerencia. @Harlan, hay muchos puntos de datos para cada x/y. Me gustaría trazar un punto de datos para cada x/y, y quiero que el tamaño de dicho punto de datos sea proporcional al número de pares x/y. – hgmnz

Respuesta

20

Sin duda puede hacer esto contando de forma externa a ggplot, pero una de las mejores cosas de ggplot es que puede hacer muchas de estas estadísticas internamente.

Usando su ejemplo mpg arriba:

ggplot(mpg) + 
    geom_point(aes(x=great_cty, y=great_hwy, 
       size=..count..), stat="bin") 

alt text

+0

Esa es una gran solución. ¡Gracias! – Shane

+0

Exactamente lo que estaba buscando. Parece que * la mayoría * los automóviles no son buenos en términos de kilometraje de la ciudad y la carretera;) – hgmnz

+0

También te recomendamos que eches un vistazo a esta página para asegurarte de que el tamaño de los puntos es el que crees (¿radio?): http://had.co.nz/ggplot2/scale_size.html Creo que tener áreas proporcionales es tradicionalmente preferido a radios proporcionales. –