Painéis xyplot sobrepostos com linhas de regressão agrupadas

Eu quero sobrepor vários grupos em um único painel em lattice, e quero linhas de regressão independentes.

É bastante fácil obter vários painéis, cada um com uma linha de regressão usando um fator de condicionamento:

xyplot(
  Petal.Width  ~ Petal.Length | Species,
  data = iris,
  panel = function(x, y, ...) {
    panel.xyplot(x, y, ...)
    panel.abline(lm(y~x), col='#0080ff')
  },
  grid = TRUE
)

Também é bastante fácil imprimir uma única regressão para todos os pontos em um xyplot superposto:

xyplot(
  Petal.Width ~ Petal.Length,
  data = iris,
  groups = Species,
  panel = function(x, y, ...) {
    panel.xyplot(x, y, ...)
    panel.abline(lm(y~x))
  },
  grid = TRUE,
  auto.key = list(title='Species', space='right')
)

Mas isso não é o que eu preciso. Eu vou dar uma resposta para isso, mas parece confuso. Talvez seja apenas a natureza da fera.

Eu estou procurando por algo que seja mais fácil de entender. A rede é preferida, mas uma boa solução ggplot também pode ser aceita. Se não estiver claro, estou criando gráficos para consumo pelos usuários do Excel.

questionAnswers(3)

yourAnswerToTheQuestion