我正在使用ggplot2中的"提示"数据集.如果我做
sp = ggplot(tips,aes(x=total_bill, y = tip/total_bill)) +
geom_point(shape=1) +
facet_grid(sex ~ day)
Run Code Online (Sandbox Code Playgroud)
情节很好.但我现在想要改变"Fri"下的情节的面板背景.有没有办法做到这一点?
更好的是,我可以通过传递参数来有条件地改变颜色吗?例如,如果超过3个点低于0.1,那么将面板背景(仅适用于该面板)更改为某种颜色,而其他所有颜色保持默认浅灰色?
jor*_*ran 61
在ggplot2中做任何事情的一般规则是,
在这种情况下,由于要更改的图的特定方面,这会变得有点复杂.设计ggplot2的方式是将图表的数据元素(即geom)与非数据元素(即主题)分开,并且情节背景属于"非数据"类别.
总是可以手动修改底层网格对象,但这很繁琐,细节可能会随着ggplot2的不同版本而改变.相反,我们将使用哈德利在这个问题中提到的"黑客" .
#Create a data frame with the faceting variables
# and some dummy data (that will be overwritten)
tp <- unique(tips[,c('sex','day')])
tp$total_bill <- tp$tip <- 1
#Just Fri
ggplot(tips,aes(x=total_bill, y = tip/total_bill)) +
geom_rect(data = subset(tp,day == 'Fri'),aes(fill = day),xmin = -Inf,xmax = Inf,
ymin = -Inf,ymax = Inf,alpha = 0.3) +
geom_point(shape=1) +
facet_grid(sex ~ day)
Run Code Online (Sandbox Code Playgroud)

#Each panel
ggplot(tips,aes(x=total_bill, y = tip/total_bill)) +
geom_rect(data = tp,aes(fill = day),xmin = -Inf,xmax = Inf,
ymin = -Inf,ymax = Inf,alpha = 0.3) +
geom_point(shape=1) +
facet_grid(sex ~ day)
Run Code Online (Sandbox Code Playgroud)
