2013-06-19 6 views
0

У меня есть кадр данных (mmt.ranking.sum_2) со списком из 25 вопросов (вопросы 1-го столбца).ggplot, уложенная гистограмма, порядок значений x смешаны

Вопросительным последовательностям последовательно предшествуют 9a-h, 10a-j, 11a-g; т.е. пронумерованы

Для каждого вопроса есть счетчики ответов в классах от r0-r5 (колонка 2-7.)

questions    r0 r1 r2 r3 r4 r5 
9a 'question text'  1 1 0 8 3 8 
9b 'question text'  1 0 2 7 7 4 
... 
9h 'question text'  1 6 4 7 3 0 
10a 'question text' ... 
... 
10j 'question text' ... 
... 

11g 'question text' ... 

Это расплавляется & значения нарисованы в столбчатой ​​диаграммы

< df.melt -melt (mmt.ranking.sum_2 [, 1: 7], id.vars = "вопросы")

ggplot (df.melt, АЕС (вопросы, значение заполнения = переменная)) + geom_bar() + coord_flip() + их e_bw() + scale_fill_brewer()

В исходном кадре данных (смотри выше) & в расплавленных один

вопросы значение переменной

9a'question текст»r0 1

9b 'текст вопроса' r0 1

...

9a'question текс т 'r1 2

...

11g'question текст' r5 2

порядок вопросов правильно: 9а-ч, 10a-J, 11а-г

Но изменения порядка & неожиданно меняются на финальную диаграмму («coord_flip» вызывает горизонтальные бары).

сверху> вниз: 9h-9а, 11а 11g-, 10j-10a

Любые идеи, почему и как я могу сохранить первоначальный заказ?

Любая помощь приветствуется

Спасибо, Георг

+1

Пожалуйста, некоторые усилия, чтобы форматировать ваш вопрос. Я пытался его очистить, но безуспешно. Мы должны просто скопировать и вставить код, чтобы помочь найти решение. – agstudy

ответ

0

Вы должны reorder ваши оси х с использованием reorder, Попробуйте это, например, заменить

aes(questions,..) 

по

aes(reorder(questions,as.numeric(gsub('([0-9]+).*','\\1', 
      df.melt$questions)),...) 

You не gi ve воспроизводимый пример Так что я не могу быть уверен в данном решении. Вот какой код для создания ваших анкетных данных (я потратил 30 минут на создание ваших данных и менее одной минуты, чтобы найти решение, поэтому, пожалуйста, попробуйте воспроизвести данные в следующий раз).

## 6 questions 
N <- 6 
set.seed(123) 
let <- sample(1:5,N,rep=TRUE) 
qs <- lapply(seq(N), 
     function(x){ 
     nn <- paste0(x,letters[1:20][seq(let[x])]) 
     somtext <- replicate(3,paste(sample(c(0:9, letters, LETTERS), 
         5, replace=TRUE), 
       collapse="")) 
     paste(nn,'question text',paste0(somtext,collapse=' ')) 

     }) 

questions <- unlist(qs) 

dat <- matrix(sample(0:8,length(questions)*6,rep=TRUE),ncol=6) 

colnames(dat) <- paste0('r',0:5) 
dat <- data.frame(questions,dat) 

library(reshape2) 
df.melt <- melt(dat, id.vars="questions") 

Затем, когда я сюжет его с помощью:

ggplot(df.melt, aes(reorder(questions,as.numeric(gsub('([0-9]+).*','\\1', df.melt$questions))) 
        ,value, fill=variable)) + 
    geom_bar(stat='identity')+ 
    theme_bw()+ 
    coord_flip() + 
    scale_fill_brewer() 

`enter image description here

+0

Благодарим вас за усилия по созданию тестовых данных. Извинения, но все, что я пытался прикрепить к исходному материалу, было предотвращено программным обеспечением форума :(; Georg – user2500732

+0

@ user2500732 Добро пожаловать в SO. Вы можете прочитать это о том, как спросить [воспроизводимый пример] (http://stackoverflow.com/ вопросы/5963269/как в изготовлении, а-пре-р-воспроизводимый-пример). – agstudy

Смежные вопросы