2010-11-19 25 views
11

Intuitivement Je cherche quelque chose comme: facet_(scales="free_color")ggplot2: échelle de couleur séparée par facette

je fais quelque chose comme

p <- ggplot(mpg, aes(year, displ, color=model)) + facet_wrap(~manufacturer) 
p + geom_jitter() 

C'est: tracer des mesures 2d des individus (model) appartenant à différentes espèces (manufacturer) facetté par une espèce, indiquant l'individu par la couleur. Le problème est que tous les individus partagent la même échelle de couleurs - de sorte que les points d'une facette ont des couleurs très similaires. Utiliser l'esthétique de groupe avec geom_line résoudrait le problème, mais les lignes racontent une histoire différente de celle des points.

Une autre solution évidente serait de supprimer le facettage et de tracer un tracé séparé pour chaque sous-ensemble. (Si cela devrait être la seule solution: existe-t-il des moyens rapides, intelligents ou éprouvés de le faire?)

Répondre

5

Je ne suis pas sûr que ce soit une option disponible lorsque vous colorez par un facteur. Cependant, un moyen rapide pour produire les parcelles serait quelque chose comme ceci:

d_ply(mpg, .(manufacturer), function(df) { 
jpeg(paste(df$manufacturer[[1]], ".jpeg", sep="")) 
plots <- ggplot(df, aes(year, displ, color=factor(model))) + geom_jitter() 
print(plots) 
dev.off() 
}) 

Réponses associées: Different legends and fill colours for facetted ggplot?

+0

Comme mentionné hadley (dans la réponse que vous liez ed) "il est facile de contourner le problème en dessinant des parcelles séparées" - cela montre comment. Merci! Mais j'ai encore du mal à les combiner d'une manière qui correspond aux autres complots à facettes que j'ai créés. – ian

+0

Pourriez-vous nous montrer ce que vous avez vu jusqu'à présent? Et essayez de décrire ce qui est/ne correspond pas? –

+0

En fait, peut-être qu'il serait préférable de poser une nouvelle question montrant ce que vous avez actuellement en termes de parcelle (s) et ce que vous cherchez réellement. –

2

Je pense que vous voulez simplement la couleur par classe, où chaque fabricant fait plusieurs modèles, chacun seulement un ou deux par classe:

p <- ggplot(mpg, aes(year, displ, color=class)) + facet_wrap(~ manufacturer) 
p + geom_jitter() 

alt text

+1

L'ensemble de données 'mpg' n'était qu'un exemple. Je veux tracer des gradients de densité ('x' vs' y') d'échantillons d'arbres ('color' ou' group') par espèce ('facet'). Chaque arbre individuel appartient à une seule espèce. – ian