2009-10-15 8 views
10

Ich habe einige Daten, für die auf einer Ebene eines Faktors eine signifikante Korrelation besteht. Auf der anderen Ebene gibt es keine. Diese Seite an Seite zu zeichnen ist einfach. Hinzufügen einer Linie zu beiden von ihnen mit stat_smooth, auch einfach. Ich möchte jedoch nicht, dass die Linie oder ihre Füllung in einer der beiden Facetten angezeigt wird. Gibt es einen einfachen Weg, dies zu tun? Vielleicht eine leere Farbe für die Füllung und Farbe einer der Linien irgendwie angeben?Hinzufügen von stat_smooth in nur 1 Facette in ggplot2

Antwort

28

Denken Sie nicht über eine Facette Kommissionierung, denken sie eine Teilmenge der Daten liefern stat_smooth:

ggplot(df, aes(x, y)) + 
    geom_point() + 
    geom_smooth(data = subset(df, z =="a")) + 
    facet_wrap(~ z) 
3

Natürlich beantwortete ich später meine eigene Frage. Gibt es dafür einen weniger hackigen Weg? Ich frage mich, ob man verschiedenen Panels sogar unterschiedliche Funktionen zuordnen könnte.

Eine Technik besteht darin, + scale_fill_manual und scale_colour_manual zu verwenden. Sie erlauben es einem, anzugeben, welche Farben verwendet werden. Also, in diesem Fall sagen wir, Sie haben

Sie können Farben für die Füllung und Farbe mit den folgenden angeben. Beachten Sie, dass die zweite Farbe klar ist, da sie einen Hexadezimalwert verwendet, wobei die letzten beiden Zahlen für Transparenz stehen. Also, 00 = klar.

a+stat_fill_manual(values=c("grey", "#11111100"))+scale_colour_manual(values=c("blue", "#11111100")) 
+0

, die wie eine vernünftige Lösung klingt. Im Allgemeinen, wenn Sie Facetten verwenden, möchten Sie wirklich das gleiche in jeder Facette setzen. Wenn nicht, ist es wahrscheinlich besser, alternative Ansätze zu verwenden. Sehen Sie sich diese Frage (und meine Antwort) für weitere Informationen an: http://stackoverflow.com/questions/1532535/showing-multiple-axis-labels-using-ggplot2-with-facetwrap-in-r – Harlan