2009-10-15 11 views
10

J'ai quelques données pour lesquelles, à un niveau d'un facteur, il y a une corrélation significative. À l'autre niveau, il n'y en a pas. Tracer ces côtés côte à côte est simple. Ajouter une ligne à tous les deux avec stat_smooth, aussi simple. Cependant, je ne veux pas que la ligne ou son remplissage soit affiché dans l'une des deux facettes. Y a-t-il un moyen simple de le faire? Peut-être spécifier une couleur vide pour le remplissage et la couleur de l'une des lignes en quelque sorte?Ajout de stat_smooth à seulement 1 facette dans ggplot2

Répondre

28

Ne pas penser à choisir une facette, pensez fournir un sous-ensemble de vos données à stat_smooth:

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

Bien sûr, j'ai plus tard répondu à ma propre question. Bien, y a-t-il une manière moins hack-y de faire ceci? Je me demande si l'on pourrait même adapter différentes fonctions à différents panneaux.

Une technique consiste à utiliser + scale_fill_manual et scale_colour_manual. Ils permettent de spécifier quelles couleurs seront utilisées. Donc, dans ce cas, disons que vous avez

a<-qplot(x, y, facets=~z)+stat_smooth(method="lm", aes(colour=z, fill=z)) 

Vous pouvez spécifier les couleurs pour le remplissage et la couleur en utilisant ce qui suit. Notez que la deuxième couleur est claire, car elle utilise une valeur hexadécimale avec les deux derniers chiffres représentant la transparence. Donc, 00 = clair.

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

Cela ressemble à une solution raisonnable. En général, si vous utilisez des facettes, vous voulez vraiment mettre la même chose dans chaque facette. Si vous ne le faites pas, il vaut probablement mieux utiliser d'autres approches. Découvrez cette question (et ma réponse) pour plus d'informations: http://stackoverflow.com/questions/1532535/showing-multiple-axis-labels-using-ggplot2-with-facetwrap-in-r – Harlan