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
10
A
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"))
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