2015-10-30 3 views
1

У меня есть набор данных, где мне нужно представлять стеклянную гистограмму для двух когорт в течение трех периодов времени. В настоящее время я огранен по годам и заполняюсь на основе значений вероятности для моего DV (# раз, t, что кто-то идет в дом престарелых, pr, 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

Смежные вопросы