📜  R ggplot2 - 边际图(1)

📅  最后修改于: 2023-12-03 15:04:45.145000             🧑  作者: Mango

R ggplot2 - 边际图

边际图是一种将两个变量的分布及其关系表示在同一图形中的方法。在 R 语言中,可以使用 ggplot2 包创建边际图。本文将介绍如何使用 ggplot2 创建边际图,以及如何定制颜色、填充和主题等参数。

准备数据

我们需要先准备一些数据,作为创建边际图的数据源。在这个例子中,我们将使用 R 内置的 iris 数据集。

library(ggplot2)
head(iris)
创建边际图

要创建一个基本的边际图,我们可以使用 ggplot2 的 geom_density2d 函数和 geom_density 函数分别绘制 2D 核密度估计曲线和单变量密度图。

ggplot(iris, aes(x = Sepal.Length, y = Sepal.Width)) +
    geom_density2d() +
    geom_density(aes(x = Sepal.Length), alpha = 0.3, fill = "blue") +
    geom_density(aes(y = Sepal.Width), alpha = 0.3, fill = "green") +
    labs(title = "Iris Sepal Length vs. Width",
         x = "Sepal Length (cm)",
         y = "Sepal Width (cm)")

我们可以看到,上面的代码绘制了一张包含 iris 数据集中 Sepal.Length 和 Sepal.Width 两个变量分布及其关系的边际图。

边际直方图

除了密度曲线之外,我们还可以使用 geom_histogram 函数绘制边际直方图。

ggplot(iris, aes(x = Sepal.Length, y = Sepal.Width)) +
    geom_density2d() +
    geom_histogram(aes(x = Sepal.Length), alpha = 0.3, fill = "blue") +
    geom_histogram(aes(y = Sepal.Width), alpha = 0.3, fill = "green") +
    labs(title = "Iris Sepal Length vs. Width",
         x = "Sepal Length (cm)",
         y = "Sepal Width (cm)")
颜色和填充

我们可以使用 scale_fill_manual 函数和 scale_color_manual 函数定制边际图的填充和颜色。

ggplot(iris, aes(x = Sepal.Length, y = Sepal.Width)) +
    geom_density2d() +
    geom_density(aes(x = Sepal.Length), alpha = 0.3, fill = "blue") +
    geom_density(aes(y = Sepal.Width), alpha = 0.3, fill = "green") +
    labs(title = "Iris Sepal Length vs. Width",
         x = "Sepal Length (cm)",
         y = "Sepal Width (cm)") +
    scale_fill_manual(values = c("blue", "green")) +
    scale_color_manual(values = c("blue", "green"))
主题

最后,我们可以使用 theme_minimal 函数定制边际图的主题。

ggplot(iris, aes(x = Sepal.Length, y = Sepal.Width)) +
    geom_density2d() +
    geom_density(aes(x = Sepal.Length), alpha = 0.3, fill = "blue") +
    geom_density(aes(y = Sepal.Width), alpha = 0.3, fill = "green") +
    labs(title = "Iris Sepal Length vs. Width",
         x = "Sepal Length (cm)",
         y = "Sepal Width (cm)") +
    scale_fill_manual(values = c("blue", "green")) +
    scale_color_manual(values = c("blue", "green")) +
    theme_minimal()