2013-06-19 36 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