2010-11-19 10 views
11

Intuitiv suchen Ich bin für so etwas wie: facet_(scales="free_color")ggplot2: separate Farbskala pro Facette

ich etwas tun, wie

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

Das heißt: Plot 2D-Messungen von Einzelpersonen (model) zu verschiedenen Arten gehören, (manufacturer) facettiert durch eine Spezies, die das Individuum durch Farbe anzeigt. Das Problem ist, dass alle Personen die gleiche Farbskala haben - so dass die Punkte in einer Facette sehr ähnliche Farben haben.

Die Verwendung der Gruppenästhetik mit geom_line würde das Problem lösen, aber Linien erzählen eine andere Geschichte als Punkte.

Eine weitere naheliegende Lösung wäre, die Facettierung zu löschen und für jede Teilmenge eine separate Grafik zu zeichnen. (Wenn dies die einzige Lösung sein sollte: Gibt es irgendwelche schnellen, intelligenten oder bewährten Möglichkeiten, dies zu tun?)

Antwort

5

Ich bin nicht sicher, dass dies eine verfügbare Option ist, wenn Sie durch einen Faktor färben. Allerdings ist eine schnelle Möglichkeit, die einzelnen Parzellen zu produzieren würde wie folgt sein:

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() 
}) 

Verwandte Antworten: Different legends and fill colours for facetted ggplot?

+0

Wie Hadley erwähnt (in der Antwort, die Sie verlinken ed) "es ist einfach, mit separaten Plots zu arbeiten" - das zeigt, wie. Vielen Dank! Aber ich kämpfe immer noch darum, sie so zu kombinieren, dass sie zu den anderen Facetten-Plots passt, die ich erstellt habe. – ian

+0

Können Sie uns zeigen, was Sie bisher haben? Und versuchen Sie zu beschreiben, was passt nicht? –

+0

Eigentlich wäre es vielleicht am besten, eine neue Frage zu stellen, die zeigt, was Sie gerade in Bezug auf die Handlung (en) haben und wonach Sie eigentlich suchen. –

2

Ich glaube, Sie einfach nach Klasse färben möchten, wo jeder Hersteller mehrere Modelle macht, die jeweils nur ein oder zwei pro Klasse:

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

alt text

+1

Der 'mpg'-Datensatz war nur ein Beispiel. Ich möchte Dichtegradienten ('x' gegen' y') von Baumproben ('color' oder' group') pro Spezies ('facet') auftragen. Jeder einzelne Baum gehört nur einer Spezies an. – ian

Verwandte Themen