5

I would like to draw a box at the bottom of each panel, where each panel may have different y-ranges. The box should always be from 3 to 7 on the x-axis and from the border at the bottom of the panel to about 5% of y-axis high. So I would like to specify the coordinates of e.g. annotation_custom or geom_rect in units something like:

xmin=unit(3, "native"), xmax=unit(7,"native"), ymin=unit(0,"npc"), ymax=unit(0.05,"npc") 

I can do it, but the units seem to be ignored, its always native.

library("grid") library("ggplot2") df <- data.frame(x=c(1:10,1:10),y=c(1:10,1001:1010),condition=rep(c("A","B"),each=10)) g <- rectGrob(gp=gpar(fill="black")) p <- ggplot(df, aes(x=x,y=y)) + geom_line() + facet_wrap(~ condition, scales="free_y") p + geom_rect(xmin=3,xmax=7,ymin=0.56,ymax=1,colour="black", fill="black") g <- rectGrob(gp=gpar(fill="black")) p + annotation_custom(g, xmin=3, xmax=7, ymin=0, ymax=1 ) p + annotation_custom(g, xmin=unit(3, "native"), xmax=unit(7,"native"),ymin=unit(0,"npc"),ymax=unit(1,"npc") ) 
0

1 Answer 1

7

You could do,

g <- rectGrob(y=0,height = unit(0.05, "npc"), vjust=0, gp=gpar(fill="black")) p + annotation_custom(g, xmin=3, xmax=7, ymin=-Inf, ymax=Inf) 

enter image description here

Sign up to request clarification or add additional context in comments.

1 Comment

somehow, this question makes me wonder about defining complex units, 1 npc + 2i cm whereby the real (imag) part would represent relative (resp. absolute) units.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.