从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_rect
或geom_polygon
,但我不确定如何将其限制为一个地块。
我在R帮助列表上偶然发现了thread,但解决方案对我不起作用
非常感谢任何有关如何向前发展的建议。
答案 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)
答案 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)