Paneles xyplot superpuestos con líneas de regresión agrupadas

Quiero superponer grupos múltiples en un solo panel en celosía, y quiero líneas de regresión independientes.

Es bastante fácil obtener varios paneles, cada uno con una línea de regresión mediante el uso de un factor de condicionamiento:

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
)

También es bastante fácil imprimir una sola regresión para todos los puntos en una xyplot superpuesta:

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

Pero esto no es lo que necesito. Entraré una respuesta a esto, pero parece desordenado. Tal vez esa sea la naturaleza de la bestia.

Estoy buscando algo que sea más fácil de entender. Se prefiere el enrejado, pero también se puede aceptar una buena solución ggplot. Si no está claro, estoy haciendo diagramas para el consumo de los usuarios de Excel.

Respuestas a la pregunta(3)

Su respuesta a la pregunta