двухсторонний -график плотности в сочетании с односторонним графиком плотности с выбранными областями в 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")

Мне нужно построить двухсторонний график плотности, я не уверен, что есть лучший способ, чем следующий:

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

Я хочу объединить все три типа в один (Я не знал, могу ли я создать двухсторонний -график в ggplot ), нет предпочтения в том, будет ли решение быть графиком в ggplot, базовом или смешанном. Я надеюсь, что это выполнимый проект, учитывая надежность R. Лично я предпочитаю ggplot2.

enter image description here

Обратите внимание :нижняя заливка на этом графике неверна, красный цвет всегда должен быть ниже, а зеленый вверху на графиках xvar и yvar, что соответствует заштрихованной области на графике плотности xy.

Изменить:Максимальное ожидание на графике (спасибо Сету и Джону за очень точный ответ) (1 )удаление пробелов и меток осей и т. д., чтобы сделать его компактным
(2 )выравнивание сеток таким образом, чтобы средние деления графика и сетки совпадали с боковыми делениями, а метки и размеры графиков выглядели одинаково.enter image description here

28
задан SHRram 19 July 2012 в 02:30
поделиться