10

从 ggplot2 帮助页面获取图表:

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

是否可以仅更改选定面板的边框(颜色和/或厚度)?例如,我想更改 faceting variable 的 '1' 的 facet 的边框vs

我尝试添加

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

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

我也在考虑使用geom_rectgeom_polygon但不确定如何将其限制在一个情节中。

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

任何有关如何前进的建议将不胜感激。

4

2 回答 2

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)

在此处输入图像描述

于 2013-08-21T21:32:14.957 回答
6

我也试图实现一个分面边框。我只是对 Hadley 在问题中提到的线程中提供的答案进行了一些调整,如下所示:

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

生成以下具有不同构面边界的图形: 在此处输入图像描述

于 2016-01-06T23:27:37.607 回答