2013-05-29 4 views
0

Чтобы сравнить различные группы с целым населением, я пытаюсь добавить поле населенности ящика для заполнения в сюжет. Когда ось числовое это легко достигается с помощью geom_area и geom_hline:ymin и ymax для дискретной оси в geom_area

m <- median(mtcars$mpg) 
Q1 <- quantile(as.numeric(mtcars$mpg), c(0.25)) 
Q3 <- quantile(as.numeric(mtcars$mpg), c(0.75)) 

ggplot(mtcars, aes(x=cyl, y=mpg))+ 
geom_rect(aes(xmin = -Inf , xmax = Inf , ymin = Q1 , ymax = Q3 ),fill = "blue", alpha = .002)+ 
geom_hline(yintercept= m,colour = "white", size=1) + scale_x_discrete(breaks=(factor(mtcars$cyl))) + geom_boxplot(aes(group=cyl))+ coord_flip(xlim=c(3,9)) + 
geom_point() + theme_classic() 

enter image description here С фактором на оси х xmax=Inf и xmin=-Inf doens't работы (что можно ожидать):

m <- median(esoph$ncases) 
Q1 <- quantile(as.numeric(esoph$ncases), c(0.25)) 
Q3 <- quantile(as.numeric(esoph$ncases), c(0.75)) 

ggplot(esoph, aes(x=agegp, y=ncases))+ 
geom_rect(aes(xmin = -Inf , xmax = Inf , ymin = Q1 , ymax = Q3 ),fill = "blue", alpha = .002)+ 
geom_hline(yintercept= m,colour = "white", size=1) + geom_boxplot(aes(group=agegp))+ coord_flip() + geom_point() + 
theme_classic() 

Это работает, но это не то, что я хочу. Я хочу, чтобы область охватила весь участок. Также цвет области отличается по сравнению с цветом на первом участке (вероятно, связано с поведением alpha)?

ggplot(esoph, aes(x=agegp, y=ncases))+ 
geom_rect(aes(xmin = min(agegp) , xmax = max(agegp) , ymin = Q1 , ymax = Q3 ),fill = "blue", alpha = .002)+ 
geom_hline(yintercept= m,colour = "white", size=1) + geom_boxplot(aes(group=agegp))+ coord_flip() + geom_point() + 
theme_classic() 

Решения/предложения?

+1

Что происходит, когда вы перемещаете 'xmin' и' xmax' вне 'AES()'? Поскольку вы не сопоставляете их, они не должны быть там. – joran

+0

Спасибо! Работает как шарм! – JT85

+0

Нет проблем! Не стесняйтесь писать это как ответ самостоятельно и принимать его, просто чтобы это сделать. – joran

ответ

1

Как и Йоран, просто введите данные geom_area за пределы aes. Логично, потому что вы не сопоставляете.

m <- median(esoph$ncases) 
Q1 <- quantile(as.numeric(esoph$ncases), c(0.25)) 
Q3 <- quantile(as.numeric(esoph$ncases), c(0.75)) 

ggplot(esoph, aes(x=agegp, y=ncases))+ 
geom_rect(xmin = -Inf , xmax = Inf , ymin = Q1 , ymax = Q3 ,fill = "blue", alpha = .002)+ 
geom_hline(yintercept= m,colour = "white", size=1) + geom_boxplot(aes(group=agegp))+ coord_flip() + geom_point() + 
theme_classic() 

enter image description here

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