Сортировка категориальных переменных в 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
Лично мне нравится заказывать свои данные заранее. Помните, что это не упорядоченный фактор, это фактор в правильном порядке. проба ‹- преобразование(проба, буквы=переупорядочить(буквы, цифры). А чтобы просто сдвинуть коэффициенты, используйте 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