2013-06-19 72 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,AES(問題,值,填補=可變) )+ geom_bar()+ coord_flip()+它們e_bw()+ scale_fill_brewer()

在原始數據幀(見上文)在&熔化一個

問題變量值

9a'question文本」 R0 1

9b中'question text'r0 1

...

9a'question tex T 'R1 2

...

11g'question文本' R5 2

的問題的順序是正確的:圖9a-H,10A-J,圖11A-G

但訂單更改&在最終圖表中奇怪地反轉('coord_flip'導致橫條)。

頂部>下:9H-9A,11A 11g-,10J-10A

任何想法,爲什麼我怎麼能保持原有的秩序?

任何幫助表示讚賞

謝謝,喬治

+1

請做一些努力來格式化你的問題。我試圖清理它,但沒有成功。我們應該複製並粘貼您的代碼,以幫助找到解決方案。 – agstudy

回答

0

你應該reorder使用reorder你的x軸,試試這個,例如,更換

aes(questions,..) 

通過

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

不要gi有一個可重現的例子所以我不能確定從給定的解決方案。這裏有一些用於生成問卷數據的代碼(我花了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

謝謝你爲生成測試數據所做的努力。道歉,但任何我試圖附加的原始材料是由論壇軟件:(;喬治 – user2500732

+0

@ user2500732歡迎來到SO。你可以閱讀如何問一個[可重現的例子](http://stackoverflow.com/問題/ 5963269 /如何對做 - 一個偉大-R重現-例子)。 – agstudy