10

Taking the graph from ggplot2 help pages:

ggplot(mtcars, aes(factor(cyl))) + geom_bar() + facet_grid(. ~ vs)

Is it possible to change the border (colour and/or thickness) of only selected panels? I'd like to, for instance, change the border of the facet of '1' of faceting variable vs.

I tried adding

theme(panel.border = element_rect(size = 3, colour = "red", fill = NA))

but that solution changes all borders.

I was also thinking about using geom_rect or geom_polygon but am not sure how to limit it to one plot either.

I stumbled upon this thread on R help list, but the solutions didn't work for me

Any suggestions on how to move forward will be much appreciated.

radek
  • 7,240
  • 8
  • 58
  • 83
  • Might be also possible with solution from http://stackoverflow.com/questions/6750664/how-to-change-the-format-of-an-individual-ggplot2-facet-plot – radek Aug 21 '13 at 22:02

2 Answers2

10

How about filling it with a colour like this?

dd <- data.frame(vs = c(0,1), ff = factor(0:1))
ggplot() + geom_rect(data=dd, aes(fill=ff), 
    xmin=-Inf, xmax=Inf, ymin=-Inf, ymax=Inf, alpha=0.15) + 
    geom_bar(data = mtcars, aes(factor(cyl))) + facet_grid(. ~ vs) + 
    scale_fill_manual(values=c(NA, "red"), breaks=NULL)

enter image description here

Arun
  • 116,683
  • 26
  • 284
  • 387
7

I was trying to implement a facet border as well. I did just a little tweaking of the answer supplied by Hadley in the thread mentioned in the question as follows:

 # Outline colours 
outline <- data.frame( 
  cyl = c(4, 6, 8), 
  outline_color = c('green', 'orange', 'red') 
) 

# Points defining square region for background 
square <- with(mtcars, data.frame( 
  x = c(-Inf, Inf, Inf, -Inf), 
  y = c(-Inf, -Inf, Inf, Inf)
  ))

ggplot(mtcars, aes(x = mpg, y = wt)) + 
  geom_polygon(aes(x = x,y = y, color = outline_color, fill = NA), data = merge(outline, square)) + 
  geom_point() + 
  scale_fill_identity() + 
  facet_grid(. ~ cyl) 

Produces the following graph with differing facet borders: enter image description here

Seth_P
  • 171
  • 3
  • 3