2013-08-06 86 views
2

我一直在努力,現在創造了一會兒條形圖,但我需要幫助:qplot堆棧條形圖

name <- c('t1','t2') 
reading <- c('yyyggrggryyy','grgrgrrryyyy') 
df <- data.frame(name, reading) 

的讀數值只能是「Y」,「G」或「R '和字符串的長度總是12. 我試圖‘轉換’的讀入堆積條形圖對於每個名稱這樣的:

T1堆積條形圖:

Color Height 
------ ------ 
yellow 3 
green 2 
red 1 
green 2 
red 1 
yellow 3 

由於

+0

你是如何嘗試完成轉換的?什麼沒有用? – joran

回答

6
> df <- data.frame(name=rep(name, each=12), 
        reading=unlist(sapply(reading, strsplit, split=""))) 
> df 
       name reading 
yyyggrggryyy1 t1  y 
yyyggrggryyy2 t1  y 
yyyggrggryyy3 t1  y 
yyyggrggryyy4 t1  g 
snipped 
grgrgrrryyyy4 t2  r 
grgrgrrryyyy5 t2  g 
grgrgrrryyyy6 t2  r 
grgrgrrryyyy7 t2  r 
grgrgrrryyyy8 t2  r 
grgrgrrryyyy9 t2  y 
grgrgrrryyyy10 t2  y 
grgrgrrryyyy11 t2  y 
grgrgrrryyyy12 t2  y 

qplot(reading, data=df, geom="bar")+facet_grid(~name) 

enter image description here

如果你想有一個堆疊barplot,那麼你需要傳遞一個參數x是您要堆疊分組變量相同:

qplot(x=name, data=df)+facet_grid(~name)+geom_bar(aes(fill = reading)) 

enter image description here

+0

謝謝!嘗試了它,並且工作得很好......但是我找不到一種方法可以讓t1成爲一個單一的酒吧,堆放着3個單位的黃色和頂部,2個綠色,1個紅色,2個綠色,1個紅色和3個黃色。你認爲qplot有能力做到這一點嗎? – user2658394

+0

我舉了一個使用faceting的例子,但你可以刪除facet_grid命令,仍然可以得到一個堆疊的barplot:'qplot(x = name,data = df,geom =「bar」,fill = reading)' –

+0

工作很好,一些小修改我可以創建一個漂亮的圖形!我仍在測試geom_bar,它似乎總是將讀數分組,並將它們疊加在一起並創建圖形。 geom_bar可以像這樣重複顏色http://tinyurl.com/n8zjt9u? – user2658394

0
library(ggplot2) 
m<-strsplit(as.character(df$reading),"") # split the strings 
data1<-as.data.frame(table(m[[1]])) # create dataframe for first element of reading 
data2<-as.data.frame(table(m[[2]])) # create dataframe for second element of reading 
t<-rep(c("t1","t2"),c(dim(data1)[1],dim(data2)[1])) 
t<-as.data.frame(t) # create dataframe of t which gives t1 and t2 
mydata<-cbind(rbind(data1,data2),t) #final data for plot 
mydata$reading<-mydata$Var1 
qplot(reading, data=mydata, geom="bar",weight=Freq)+facet_grid(~t) 

enter image description here