2009-10-15 11 views
10

Mam niektóre dane, dla których, na jednym poziomie czynnika, istnieje znacząca korelacja. Na drugim poziomie nie ma. Drukowanie tych side-by-side jest proste. Dodanie linii do obu z funkcją stat_smooth, również prostą. Jednak nie chcę, aby linia lub jej wypełnienie były wyświetlane w jednym z dwóch aspektów. Czy istnieje prosty sposób na zrobienie tego? Być może w jakiś sposób określasz pusty kolor wypełnienia i koloru jednej z linii?Dodawanie stat_smooth do tylko 1 facet w ggplot2

Odpowiedz

28

Nie myśl o zbieranie aspekt, pomyśl dostarczanie podzbiór danych do stat_smooth:

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

Oczywiście później odpowiedziałem na moje własne pytanie. Chociaż jest to mniej hack-y sposób, aby to zrobić? Zastanawiam się, czy można nawet dopasować różne funkcje do różnych paneli.

Jedną z technik jest użycie + scale_fill_manual i scale_colour_manual. Pozwalają one określić, jakie kolory będą używane. W takim przypadku, powiedzmy, że masz Możesz określić kolory wypełnienia i koloru, używając poniższego. Zauważ, że drugi kolor jest jasny, ponieważ używa wartości szesnastkowej, a ostatnie dwie cyfry oznaczają przezroczystość. Więc 00 = jasne.

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

To brzmi jak rozsądnym rozwiązaniem. Ogólnie rzecz biorąc, jeśli używasz aspektów, naprawdę chcesz umieścić to samo w każdym aspekcie. Jeśli tego nie zrobisz, prawdopodobnie lepiej wykorzystasz alternatywne metody. Sprawdź to pytanie (i moją odpowiedź), aby uzyskać więcej informacji: http://stackoverflow.com/questions/1532535/showing-multiple-axis-labels-using-ggplot2-with-facetwrap-in-r – Harlan

Powiązane problemy