2015-07-10 84 views
1

我試圖按照如下方式以有序的方式繪製垂直堆疊的條形圖。 Ordered Vertical stacked bar chart如何使用ggplot()來排列堆疊的垂直條?

這是我用過的代碼。

setwd('d:/Dataset/lynda') 
unitcounts<-read.csv('ucounts.csv',header=T,sep=',') 

library(reshape2) 
prodf<-melt(unitcounts,id.var = "Units") 
attach(prodf) 
library(ggplot2) 
ggplot(prodf,aes(x=Units,y=value,fill=variable))+geom_bar(stat="identity") 
prodf 

這是我得到的輸出。有人可以幫助我有序地安排垂直欄嗎? enter image description here

Units,Person1,Person2,Person3,Person4,Person5 
 
Whatsits,54,64,31,43,47 
 
Doohickeys,28,47,21,28,32 
 
Gadgets,23,34,14,19,28 
 
Bahbooms,0,0,0,0,0 
 
Heehaws,0,0,0,0,0 
 
Doodads,0,0,0,0,0 
 
Meemaws,13,20,11,15,15 
 
Watchamacalists,22,30,15,15,19

+0

你的幫助是非常讚賞和歡迎。我正在嘗試從過去4小時這個簡單的事情。請幫助我 –

+0

請將數據放入問題主體(編輯按鈕)。 – tonytonov

+0

我不清楚你在問什麼?你想改變圖例的順序(從人5到人1而不是1到5)?或者你想改變你的X軸(稱爲單位)的安排? – mts

回答

0
#calculate total 
unitcounts$total <- rowSums(unitcounts[,-1]) 


#reorder factor levels by total 
unitcounts$Units <- factor(unitcounts$Units, levels=unitcounts$Units[order(unitcounts$total)]) 

#include total in id.vars, doesn't need to be plotted 
prodf<-melt(unitcounts,id.var = c("Units","total")) 


ggplot(prodf,aes(x=Units,y=value,fill=variable))+geom_bar(stat="identity") 
+0

非常感謝Heroka和其他人。它工作正常。感謝所有的努力 –