Как совместить сюжеты из ggplot2 и boxplotdou?

Я попытаюсь объяснить мою проблему, используя модифицированный код отсюда: https://stats.stackexchange.com/questions/22805/how-to-draw-neat-polygons-around-scatterplot-regions-in-ggplot2

В моем примере я использую набор данных Iris.

Мои попытки привели к этому до сих пор:

boxplotdbl не в боевой позиции

Моя цель состоит в том, чтобы нанести Double Box Plot (boxplotdou) на диаграмму рассеянного корпуса с одинаковыми размерами. Текущий код:

    library(ggplot2)
    library(boxplotdbl)
    df <- iris
    find_hull <- function(df) df[chull(df$Sepal.Length, df$Sepal.Width), ]
    hulls <- ddply(df, "Species", find_hull)

    plot <- ggplot(data = df, aes(x = Sepal.Length, y = Sepal.Width, colour=Species, fill = Species)) +
      geom_point() + 
      geom_polygon(data = hulls, alpha = 0.5) +
      labs(x = "Sepal.Length", y = "Sepal.Width")
    plot

    par(new = TRUE)
    #  This is quite close what I'm trying to achieve, without axes. But it is in wrong position
    #boxplotdou(Sepal.Length~Species, iris, Sepal.Width~Species, iris, factor.labels=FALSE, draw.legend=FALSE, name.on.axis=FALSE, ann = FALSE, axes = FALSE)
    #  This shows the axes, which do not match the underlying plot
    boxplotdou(Sepal.Length~Species, iris, Sepal.Width~Species, iris, factor.labels=FALSE, draw.legend=FALSE, name.on.axis=FALSE, ann = FALSE)

Я попытался вставить boxplotdou(... в ggplot(), но получил ошибку: "Не знаю, как добавить o к графику").

Любая помощь будет оценена.

-Kari

1 ответ

par(mar=c(2.850, 3.20, 1.30, 7.40))

После этого после вашего номинала (new = TRUE) я получил хороший оверлей. введите описание изображения здесь Эти магины могут зависеть от графического окружения. Я считаю, что координаты несовместимы между ggplot2 и базовыми графиками в R. Таким образом, вы должны настроить это вручную, если вы хотите использовать оба в одном и том же изображении. И пакет boxplotdbl предназначен для базовых графиков, а не для ggplot2.

Другие вопросы по тегам