2015-10-30 119 views
1

我有一個數據集,我需要在三個時間段內爲兩個隊列表示一個堆積條形圖。目前,我每年都要面對面,並根據我的DV的概率值進行填充(有人前往養老院的時間t,即t = 0,t = 1,... t> = 5) 。我試圖弄清楚是否可以引入另一個色標,以便每個「比較」欄都用黃色漸變填充,處理欄將填充藍色漸變。我想這樣做的最好方法可能是覆蓋這兩個地塊,但我不確定是否可以在ggplot(或其他包)中執行此操作。代碼和屏幕截圖如下:ggplot2中具有兩個色階的並排堆疊條形圖

  tempPlot <- ggplot(tempDF,aes(x = HBPCI, y = margin, fill=factor(prob))) + 
     scale_x_continuous(breaks=c(0,1), labels=c("Comparison", "Treatment"))+ 
     scale_y_continuous(labels = percent_format())+ 
     ylab("Prob snf= x")+ 
     xlab("Program Year")+ 
     ggtitle(tempFlag)+ 
     geom_bar(stat="identity")+ 
     scale_fill_brewer(palette = "Blues")+ #can change the color scheme here. 
     theme(axis.title.y =element_text(vjust=1.5, size=11))+ 
     theme(axis.title.x =element_text(vjust=0.1, size=11))+ 
     theme(axis.text.x = element_text(size=10,angle=-45,hjust=.5,vjust=.5))+ 
     theme(axis.text.y = element_text(size=10,angle=0,hjust=1,vjust=0))+ 
     facet_grid(~yearQual, scales="fixed") 

enter image description here

+0

請提供一些樣品數據使這個例子具有可重現性。 – JasonAizkalns

+0

'gridExtra :: grid.arrange()'可能會派上用場。 –

回答

3

你可能要考慮使用interaction() - 這裏有一個可重複的解決方案:

year <- c("BP", "PY1", "PY2") 
type <- c("comparison", "treatment") 

df <- data.frame(year = sample(year, 100, T), 
       type = sample(type, 100, T), 
       marg = abs(rnorm(100)), 
       fact = sample(1:5, 100, T)) 
head(df) 
# year  type  marg fact 
# 1 BP comparison 0.2794279 3 
# 2 PY2 comparison 1.6776371 1 
# 3 BP comparison 0.8301721 2 
# 4 PY1 treatment 0.6900511 1 
# 5 PY2 comparison 0.6857421 3 
# 6 PY1 treatment 1.4835672 3 

library(ggplot2) 

blues <- RColorBrewer::brewer.pal(5, "Blues") 
oranges <- RColorBrewer::brewer.pal(5, "Oranges") 

ggplot(df, aes(x = type, y = marg, fill = interaction(factor(fact), type))) + 
    geom_bar(stat = "identity") + 
    facet_wrap(~ year) + 
    scale_fill_manual(values = c(blues, oranges)) 

Plot

+0

這是完美的;謝謝! – ymediceacuerdate

相關問題