Utwórz macierz wykresów rozrzutu (odpowiednik par ()) w ggplot2
117
Czy możliwe jest wykreślenie macierzy wykresów punktowych przy ggplot2użyciu ggplotfajnych funkcji, takich jak mapowanie dodatkowych czynników na kolor, kształt itp. Oraz dodawanie gładkości?
dla mnie mpg (pierwsza kolumna w mtcars) nie powinno być czynnikiem. Nie sprawdzałem tego, ale nie ma powodu, dla którego miałby to być. Jednak dostaję wykres punktowy :)
Uwaga: na przyszłość, plotmatrix()funkcja została zastąpiona ggpairs()funkcją z GGallypakietu, jak sugeruje @ naught101 w innej odpowiedzi poniżej na to pytanie.
Nie mogłem uzyskać facetingu do pracy nad tym problemem, wydaje się, że wymaga on czynników po prawej stronie wzoru .. A może możesz mi podać minimalny przykład?
Karsten W.
1
Czy ktoś wie, jak dodać kolor? I nie wydają się być w stanie uzyskać ten gist.github.com/1405150 do pracy
Etienne niskiego Decarie
1
Pierwsza część tej odpowiedzi jest zła i powoduje zamieszanie. Nie możesz tworzyć par wykresów z fasetowaniem: możesz robić tylko wykresy y na x i grupować je według czynników. Innymi słowy, przy fasetowaniu masz takie same x i y na każdym pod-wykresie; w przypadku par masz różne x w każdej kolumnie i różne y w każdym wierszu.
naught101
28
Na przyszłość, plotmatrix()funkcja została zastąpiona ggpairs()funkcją z GGallypakietu, jak sugeruje @ naught101 w innej odpowiedzi na to pytanie.
smillig
1
@MattBannert dodał komentarz do Twojego posta, aby był bardziej widoczny. Mogę zrozumieć osoby odbierające głos, jeśli pominąłbym czytanie komentarzy. Mam nadzieję, że nie masz nic przeciwko.
zx8754,
232
Wciąż chcę to zrobić, ale Plotmatrix to bzdura. Hadley zaleca zamiast tego używanie pakietu GGally . Posiada funkcję ggpairs, która jest znacznie ulepszonym wykresem par (pozwala na używanie zmiennych nieciągłych w ramkach danych). Wykreśla różne działki na każdym kwadracie, w zależności od zmiennych typów:
To jest naprawdę świetne. Warto zauważyć, że każda colourzmienna musi być czynnikiem; spędził 45 minut, zastanawiając się nad tym.
gregmacfarlane
1
Czy istnieje sposób, aby wykreślić te macierze korelacji bez par? Na przykład muszę wykreślić pierwszą kolumnę w stosunku do każdej innej kolumny. Ggpairs daje bardzo możliwą parę. Na przykład mam 10 kolumn i to daje mi 10 * 10 = 100.Ale ja chcę tylko pierwszą kolumnę przeciwko innym 9
Rgeek
1
@Rgeek: możesz meltutworzyć ramkę danych używając zmiennej, którą jesteś zainteresowany jako zmienną id, a następnie przejrzeć inne zmienne.
naught101
6
Nie używaj ggpairs, po prostu normalnie używaj ggplot2, na przykład ggplot(data, aes(x=id, y=value)) + geom_point() + facet_grid(.~variable). Zakładam, że mówisz o wykresach rozrzutu, kiedy mówisz „wykres korelacji”, ponieważ inaczej nigdy o tym nie słyszałem.
Jeśli chce się otrzymać ggplotobiekt (nie ggmatrixtak jak w przypadku ggpairs()), rozwiązaniem jest dwukrotne stopienie danych, a następnie ggplotfasetowanie. facet_wrapbyłoby lepsze niż facet_gridw ograniczaniu wykreślanego obszaru, przy podanym scales = 'free'parametrze.
Odpowiedzi:
Możesz spróbować plotmatrix:
dla mnie mpg (pierwsza kolumna w mtcars) nie powinno być czynnikiem. Nie sprawdzałem tego, ale nie ma powodu, dla którego miałby to być. Jednak dostaję wykres punktowy :)
Uwaga: na przyszłość,
plotmatrix()
funkcja została zastąpionaggpairs()
funkcją zGGally
pakietu, jak sugeruje @ naught101 w innej odpowiedzi poniżej na to pytanie.źródło
plotmatrix()
funkcja została zastąpionaggpairs()
funkcją zGGally
pakietu, jak sugeruje @ naught101 w innej odpowiedzi na to pytanie.Wciąż chcę to zrobić, ale Plotmatrix to bzdura. Hadley zaleca zamiast tego używanie pakietu GGally . Posiada funkcję ggpairs, która jest znacznie ulepszonym wykresem par (pozwala na używanie zmiennych nieciągłych w ramkach danych). Wykreśla różne działki na każdym kwadracie, w zależności od zmiennych typów:
źródło
colour
zmienna musi być czynnikiem; spędził 45 minut, zastanawiając się nad tym.melt
utworzyć ramkę danych używając zmiennej, którą jesteś zainteresowany jako zmienną id, a następnie przejrzeć inne zmienne.ggplot(data, aes(x=id, y=value)) + geom_point() + facet_grid(.~variable)
. Zakładam, że mówisz o wykresach rozrzutu, kiedy mówisz „wykres korelacji”, ponieważ inaczej nigdy o tym nie słyszałem.GGally::ggpairs(iris, aes(colour = Species, alpha=0.4))
Jeśli chce się otrzymać
ggplot
obiekt (nieggmatrix
tak jak w przypadkuggpairs()
), rozwiązaniem jest dwukrotne stopienie danych, a następnieggplot
fasetowanie.facet_wrap
byłoby lepsze niżfacet_grid
w ograniczaniu wykreślanego obszaru, przy podanymscales = 'free'
parametrze.źródło