在ggplot2中,如何更改所选方面的边框?

时间:2013-08-21 20:55:48

标签: r ggplot2

从ggplot2帮助页面获取图表:

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

是否可以更改所选面板的边框(颜色和/或厚度)?例如,我想改变面对变量vs的'1'方面的边界。

我尝试添加

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

但该解决方案会改变所有边界。

我还在考虑使用geom_rectgeom_polygon,但我不确定如何将其限制为一个地块。

我在R帮助列表上偶然发现了thread,但解决方案对我不起作用

非常感谢任何有关如何向前发展的建议。

2 个答案:

答案 0 :(得分:8)

用这样的颜色填充它怎么样?

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

答案 1 :(得分:4)

我也试图实现一个facet边框。我只是稍微调整了Hadley在问题中提到的thread中提供的答案如下:

 # 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) 

生成具有不同构面边框的以下图形: enter image description here