2009-10-02 7 views
8

Compte tenu du tableau ggplot2 suivant:comte par le facteur dans le tableau de ggplot2

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

Je voudrais faire de la taille des points soit proportionnel au nombre de my_factor pour cette combinaison avant/courant.

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

Des idées?

== == Modifier

Voici un exemple très trivial basé sur jeu de données mpg. Définissons "great_hwy" comme hwy> 35, et "great_cty" comme 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 nous traçons great_hwy contre great_cty, il ne nous dira pas grand-chose:

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

Comment Puis-je agrandir les points de données en fonction du nombre de points x/y? J'espère que cela éclaircit, mais laissez-moi savoir le contraire.

+1

Un petit échantillon de données serait très utile ici ... vous pouvez en choisir un parmi les ensembles de données si vous le souhaitez. – Shane

+1

Je ne comprends pas ce que vous entendez par "le nombre de my_factor pour cette combinaison antérieure/actuelle". Y a-t-il plus d'un point de données pour chaque x/y? Donc, vous cherchez une solution au problème de surimposition? Ou voulez-vous dire autre chose? – Harlan

+0

@Shane, je travaille sur un meilleur exemple selon votre suggestion. @Harlan, il y a beaucoup de points de données pour chaque x/y. Je voudrais tracer un point de données pour chaque x/y, et je veux que la taille de ce point de données soit proportionnelle au nombre de paires x/y. – hgmnz

Répondre

20

Vous pouvez certainement le faire en comptant externe à ggplot, mais l'une des grandes choses à propos de ggplot est que vous pouvez faire beaucoup de ces statistiques en interne!

En utilisant votre exemple mpg ci-dessus:

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

alt text

+0

C'est une excellente solution. Merci! – Shane

+0

Exactement ce que je cherchais. On dirait que * la plupart des voitures ne sont pas géniales en termes de kilométrage de la ville et de l'autoroute;) – hgmnz

+0

Vous pouvez également consulter cette page, juste pour vous assurer que la taille des points est ce que vous pensez qu'il est (rayon?): http://had.co.nz/ggplot2/scale_size.html Je pense que les régions proportionnelles sont traditionnellement préférées aux rayons proportionnels. –

Questions connexes