Сортиране на категориални променливи в ggplot

Добър ден, искам да създам графика, използвайки ggplot2, но не използвайки неговото сортиране по подразбиране на категориалната променлива (по азбучен ред, в скрипт: букви), а използвайки свързаната стойност на непрекъсната променлива (в скрипт: число).

Ето примерен скрипт:

library(ggplot2)
trial<-data.frame(letters=letters, numbers=runif(n=26,min=1,max=26))
trial<-trial[sample(1:26,26),]
trial.plot<-qplot(x=numbers, y=letters, data=trial)
trial.plot
trial<-trial[order(trial$numbers),]
trial.plot<-qplot(x=numbers, y=letters, data=trial)
trial.plot
trial.plot+stat_sort(variable=numbers)

Последният ред не работи.


person Etienne Low-Décarie    schedule 06.05.2011    source източник


Отговори (2)


Почти съм сигурен, че stat_sort не съществува, така че не е изненадващо, че не работи, както смятате, че трябва. За щастие има функцията reorder(), която пренарежда нивото на категорична променлива в зависимост от стойностите на втора променлива. Мисля, че това трябва да направи това, което искате:

trial.plot <- qplot( x = numbers, y = reorder(letters, numbers), data = trial)
trial.plot

въведете описание на изображението тук

person Chase    schedule 06.05.2011
comment
Лично аз обичам да поръчвам данните си предварително. Помнете, че това не е подреден фактор, а фактор в правилния ред. trial ‹- transform(trial, letters=reorder(букви, цифри). И за просто изместване на факторите, използвайте relevel() - person Brandon Bertelsen; 07.05.2011
comment
И двата подхода са невероятни. Благодаря. - person Etienne Low-Décarie; 10.05.2011

Ако можете да бъдете по-конкретни за това как искате да изглежда, мисля, че общността може да направи подобрения в моя отговор, независимо дали това е, което търсите:

qplot(numbers, reorder(letters, numbers), data=trial)
person mcpeterson    schedule 06.05.2011