Добавление stat_smooth только в 1 грань в ggplot2

У меня есть некоторые данные, для которых на одном уровне фактора существует значительная корреляция. На другом уровне их нет. Построение этих бок о бок просто. Добавление строки к обоим из них с помощью stat_smooth, также просто. Тем не менее, я не хочу, чтобы строка или ее заполнение отображались на одном из двух фасетов. Есть ли простой способ сделать это? Возможно, указав пустой цвет для заливки и цвета одной из строк?

Ответ 1

Не думайте о том, чтобы выбрать грань, подумайте о поставке подмножества ваших данных в stat_smooth:

ggplot(df, aes(x, y)) +
  geom_point() + 
  geom_smooth(data = subset(df, z =="a")) + 
  facet_wrap(~ z)

Ответ 2

Конечно, я позже ответил на собственный вопрос. Хотя, есть ли меньше способов взломать это? Интересно, можно ли даже поместить различные функции в разные панели.

Один из методов заключается в использовании + scale_fill_manual и scale_colour_manual. Они позволяют указать, какие цвета будут использоваться. Итак, в этом случае, скажем, у вас есть

a<-qplot(x, y, facets=~z)+stat_smooth(method="lm", aes(colour=z, fill=z))

Вы можете указать цвета для заливки и цвета, используя следующее. Обратите внимание, что второй цвет ясен, поскольку он использует шестнадцатеричное значение с последними двумя числами, представляющими прозрачность. Итак, 00 = ясно.

a+stat_fill_manual(values=c("grey", "#11111100"))+scale_colour_manual(values=c("blue", "#11111100"))