2011-07-29 17 views
13

To pytanie wynika z tego drugiego one. Nie byłem w stanie wprowadzić tam odpowiedzi.Jak zmienić kolejność pudełek przy użyciu ggplot2?

zdefiniować:

df2 <- data.frame(variable=rep(c("vnu.shr","vph.shr"),each=10), 
     value=seq(1:20)) 

Opis:

require(ggplot2) 
qplot(variable,value, data=df2,geom="boxplot")+ 
geom_jitter(position=position_jitter(w=0.1,h=0.1)) 

ja jak mieć boxplots w odwrotnej kolejności (na przykład, jeden z prawej strony na lewo i tak dalej).

Próbowałem różnych sposobów porządkowania czynniki stosując levels, ordered, relevel, rev i tak dalej, ale ja po prostu nie może wydawać się uzyskać prawo składni.

+0

Zostało to uregulowane na tak wiele razy. Oto tylko dwa przykłady: http://stackoverflow.com/questions/3253641/how-to-change-the-order-of-a-discrete-x-scale-in-ggplot http://stackoverflow.com/ pytania/5967593/ordering-of-bars-in-ggplot –

+0

@ Roman Luštrik Co może wskazywać na to, jak mylące czynniki mogą być dla niewtajemniczonych. Po pierwsze, próbowałem posortować ramkę danych, aby czynnik był odwrócony w kolejności alfabetycznej, a następnie przekodować go jako czynnik. To nie działa bc dla współczynnika 'z = c (" b "," a ")' podstawowe liczby stosowane przez 'R' podążają za kolejnością alfabetyczną (co ma sens) s.t. kodowanie numeryczne to 'z = c (2,1)'. Ale teraz wiem, zmiana kolejności czynnika nie ma nic wspólnego z ponownym uporządkowaniem ramki danych! Przy porządkowaniu współczynnika nie zmieniamy kolejności danych, ale zmienimy liczby bazowe na "z = c (1,2)". – Fred

+0

Dla celów kreślenia, jest to kolejność poziomów czynnika, które definiują porządek na wykresie. Kiedy już dostaniesz się pod skórę, jest to płynna jazda. Odnośnie zamieszania związanego z ponownym zamawianiem ... Czy kiedykolwiek próbowałeś wyprowadzić wykres kraty/wykresu ggplot do pliku pdf? :) Chłopcze, zanim zdasz sobie sprawę, że to nie twój kod, ale brakujące "print" oświadczenie ... –

Odpowiedz

32

Czy próbowałeś to:

df2$variable <- factor(df2$variable, 
    levels = c('vph.shr','vnu.shr'),ordered = TRUE) 

Właśnie odebrał uporządkowanie tam, ponieważ mój system jest skonfigurowany w nieco inny sposób niż twoje Podejrzewam więc moja „default zamawiania” może się różnić. Ale możesz zmienić pozycję poziomów podczas ich określania.

kilka innych opcji, zależy od upodobań:

Dla prostu odwrócenie obecnego Kolejność:

factor(df2$variable,levels = rev(levels(df2$variable)),ordered = TRUE) 

lub użyć podrzędnego, aby określić konkretną kolejność, jeśli nie chcesz wpisywać na każdym poziomie ręcznie:

factor(df2$variable,levels = levels(df2$variable)[1:2],ordered = TRUE) 
+0

Dzięki, zapominam, że są liczby czynniki leżące u podstaw ... – Fred

3

już przyjął (idealnie w porządku) rozwiązanie, ale tutaj jest inna możliwość korzystania relevel(). Nie wiem, dlaczego to nie działało dla ciebie?

#default plot 
ggplot(df2, aes(variable, value)) + geom_boxplot() 

enter image description here

#Reverse reverse! 
df2$variable2 <- with(df2, relevel(variable, "vph.shr")) 
ggplot(df2, aes(variable2, value)) + geom_boxplot() 

enter image description here

+4

Co słychać na zdjęciach? Gdzie używasz urządzenia Commodore 64 lub jakiegoś innego urządzenia z lat 80. ;-) – Fred

+5

@Fred - Rysowałem je ręcznie w farbie microsoft, aby wyglądać jak wyjście z urządzenia ggplot. Właściwie to zapisałem obrazy jako małe jpegy (2 x 2), więc nie rozpraszałyby ... ale gdziekolwiek jest to miejsce, w którym obrazy mają swoje własne wyobrażenia o tym, jak duże mogą być obrazy ... – Chase

+2

Uwielbiam [zło pixel] (http://www.youtube.com/watch?v=iBGZPzt5Dts) estetyczne. Miło wiedzieć, jak to powtórzyć. – Fred

Powiązane problemy