Zweiwege-Dichtediagramm kombiniert mit einem Einwege-Dichtediagramm mit ausgewählten Regionen in r

# data 
set.seed (123)
xvar <- c(rnorm (1000, 50, 30), rnorm (1000, 40, 10), rnorm (1000, 70, 10))
yvar <-   xvar + rnorm (length (xvar), 0, 20)
myd <- data.frame (xvar, yvar)


# density plot for xvar
            upperp = 80   # upper cutoff
            lowerp = 30   # lower cutoff
            x <- myd$xvar
            plot(density(x))
            dens <- density(x)
            x11 <- min(which(dens$x <= lowerp))
            x12 <- max(which(dens$x <= lowerp))
            x21 <- min(which(dens$x > upperp))
            x22 <- max(which(dens$x > upperp))
            with(dens, polygon(x = c(x[c(x11, x11:x12, x12)]),
                y = c(0, y[x11:x12], 0), col = "green"))
             with(dens, polygon(x = c(x[c(x21, x21:x22, x22)]),
                y = c(0, y[x21:x22], 0), col = "red"))
            abline(v = c(mean(x)), lwd = 2, lty = 2, col = "red")
# density plot with yvar
    upperp = 70  # upper cutoff
    lowerp = 30   # lower cutoff
    x <- myd$yvar
    plot(density(x))
    dens <- density(x)
    x11 <- min(which(dens$x <= lowerp))
    x12 <- max(which(dens$x <= lowerp))
    x21 <- min(which(dens$x > upperp))
    x22 <- max(which(dens$x > upperp))
    with(dens, polygon(x = c(x[c(x11, x11:x12, x12)]),
        y = c(0, y[x11:x12], 0), col = "green"))
     with(dens, polygon(x = c(x[c(x21, x21:x22, x22)]),
        y = c(0, y[x21:x22], 0), col = "red"))
    abline(v = c(mean(x)), lwd = 2, lty = 2, col = "red")

Ich muss eine Zweiwege-Dichtedarstellung zeichnen. Ich bin mir nicht sicher, ob es einen besseren Weg gibt als den folgenden:

ggplot(myd,aes(x=xvar,y=yvar))+
    stat_density2d(aes(fill=..level..), geom="polygon") +
    scale_fill_gradient(low="blue", high="green") + theme_bw()

Ich möchte alle drei Typen zu einem kombinieren (ich wusste nicht, ob ich eine Zwei-Wege-Zeichnung in ggplot erstellen kann), es gibt keinen Vorzug, ob die Lösung darin besteht, dass Zeichnungen in ggplot oder base oder mixed sind. Ich hoffe, dass dieses Projekt machbar ist, wenn man die Robustheit von R berücksichtigt. Ich persönlich bevorzuge ggplot2.

Hinweis: Die untere Schattierung in diesem Diagramm ist nicht richtig. In xvar- und yvar-Diagrammen sollte Rot immer niedriger und die obere grüne Schattierung immer höher sein, entsprechend dem schattierten Bereich im xy-Dichtediagramm.

Bearbeiten: Ultimative Erwartung in der Grafik (danke seth und jon für die sehr genaue Antwort) (1) Entfernen von Leerzeichen und Achsenmarkierungen usw., um sie kompakt zu machen
(2) Ausrichten von Gittern, sodass die mittleren Teilstriche und Teilstriche mit den seitlichen Teilstrichen und Beschriftungen übereinstimmen und die Größe der Teilstriche gleich aussehen.

Antworten auf die Frage(3)

Ihre Antwort auf die Frage