2015-11-17 14 views
6

Pracuję nad połączeniem kilku demonstracji typu R, aby pokazać niektóre z jego funkcji współpracownikom. Szczególnie chciałbym zainteresować ich wersją ggplot2, a więc składałem prosty przykład faceting przy użyciu facet_grid z zestawem danych iris.Co powoduje błąd aspektu ggplot2?

Aby pokazać im różne tryby, chciałem im pokazać, co będzie produkowane przy użyciu .~Species, Species~. i Species~Species (słaby przykład, przyznaję).

To wydaje się wywoływać dziwne zachowanie w ggplot i zastanawiałem się, dlaczego to możliwe. Spodziewam się, że poniższy wykres będzie zawierał punkty wzdłuż przekątnej, gdzie nazwy gatunków na każdej osi pasują do siebie. Zamiast tego wszystko jest wymienione pod numerem setosa na osi X, a następnie pod rzeczywistymi gatunkami na osi Y.

Zdaję sobie sprawę, że ten przykład nie pojawiłby się w żadnym realistycznym scenariuszu użytkowania, to tylko uderzyło mnie jako ciekawe dziwactwo. Dlaczego ggplot zachowuje się tak?

Próbowałem również tego z zestawu danych mtcars i uzyskać ten sam efekt.

library("ggplot2") 
data(iris) 
ggplot(iris, aes(Petal.Width, Petal.Length, colour=Species)) + 
    geom_point() + 
    theme_bw() + 
    facet_grid(Species~Species) 

ggplot faceted scatterplot showing bug

+1

może być zainteresowany w 'GGally :: ggpairs()' ... –

+0

ha, tak ja nie przybyć na tę po zastanowieniu powinienem zbudować matryce rozrzutu! – Tumbledown

+0

Nie wiem, dlaczego tak się dzieje, ale myślę, że możesz dostać to, czego chcesz, tworząc kolejną zmienną 'iris $ Gatunki1 <- iris $ Gaties' i faceting na' Gatunki ~ Gatunki1'. –

Odpowiedz

0

To dlatego, że nie mają żadnych informacji o ggplot2 drukowania kombinacji, na przykład setosa i versicolor.

W tym kodzie ponownie wykorzystuję komentarz @Sam i próbuję (zmieniam kolejność) nowych gatunków kolumn, które tworzymy. Stworzy to combinaison gatunków. Z ekologicznego punktu widzenia to prawdopodobnie wprowadzanie w błąd, tak jak ja, ale na pewno drukuje gatunki w kombinacjach różnych aspektów_grid.

library("ggplot2") 
data(iris) 
iris$Species1 <- sample(iris$Species) 
ggplot(iris, aes(Petal.Width, Petal.Length, colour=Species)) + 
    geom_point() + 
    theme_bw() + 
    facet_grid(Species~Species1) 

Tak może wyglądać. Znowu stworzyłem różne pary gatunków, aby wydrukować pary w siatce aspektów. R_output

Byłby to przykład z różnych lat

iris$Year <- rep(2010:2014,dim(iris)[2]) 
ggplot(iris, aes(Petal.Width, Petal.Length, colour=Species)) + 
    geom_point() + 
    theme_bw() + 
    facet_grid(Year~Species) 

enter image description here