2011-05-06 8 views
7

Добрый день, я хочу создать графику с помощью ggplot2, но не используя сортировку по умолчанию категориальной переменной (в алфавитном порядке, в сценарии: буквы), но используя связанное значение непрерывной переменной (в скрипте: число).Сортировка категориальных переменных в ggplot

Ниже приведен пример сценария:

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) 

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

ответ

8

Я уверен, что stat_sort не существует, поэтому неудивительно, что он не работает, как вы думаете. К счастью, есть функция reorder(), которая переупорядочивает уровень категориальной переменной в зависимости от значений второй переменной. Я думаю, что это должен делать то, что вы хотите:

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

enter image description here

+1

Лично я хотел бы заказать мои данные перед началом работы. Помните, что это не упорядоченный фактор, это фактор в правильном порядке. trial <- transform (trial, letters = reorder (буквы, цифры)). И чтобы просто сдвинуть факторы, используйте release() –

+0

Оба подхода потрясающие. –

0

Если бы вы могли быть более конкретную информацию о том, как вы хотите его посмотреть, я думаю, что сообщество может внести улучшения на мой ответ, независимо это то, что Вы искали:

qplot(numbers, reorder(letters, numbers), data=trial) 
Смежные вопросы