📜  在 R 中组合多个 ggplot2 图例(1)

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

在 R 中组合多个 ggplot2 图例

在 ggplot2 中,我们可以使用 ggplot() 函数来创建一个基础图形,然后使用 + 符号来添加各种图层和组件。每个图层的图例通常会自动生成,但如果我们需要在同一图形中组合多个图例,则需要进行特殊配置。

1. ggplot2 中的基础图例

首先,让我们创建一个基础的 ggplot2 散点图:

library(ggplot2)

# 创建数据框
df <- data.frame(x = rnorm(20), y = rnorm(20), z = c(rep("A", 10), rep("B", 10)))

# 绘制散点图
ggplot(df, aes(x = x, y = y, color = z)) + 
  geom_point()

在此图例中,我们使用颜色来区分数据点所属的类别(A 或 B)。在图例中,我们可以看到一个包含两个条目的自动生成图例。

2. 添加标题和位置

让我们为此基础图例添加一个标题,以及将其移动到右上角:

# 移动图例位置
p <- ggplot(df, aes(x = x, y = y, color = z)) + 
  geom_point() +
  labs(title = "散点图")

# 调整图例位置
p + theme(legend.position = c(0.85, 0.85))

在上面的代码中,我们使用 labs() 函数为图形添加了一个标题。接下来,我们使用 theme() 函数,设置 legend.position 选项为 c(0.85, 0.85),将图例位置移动到右上角。第一个值为 x(水平)的坐标,第二个值为 y(垂直)的坐标。

3. 具有多个图例的图形

接下来,让我们为同一图形中的每个数据子集(A 和 B)创建一个独立的图例:

# 创建两个不同的散点图
p1 <- ggplot(subset(df, z == "A"), aes(x = x, y = y, color = "A")) + geom_point()
p2 <- ggplot(subset(df, z == "B"), aes(x = x, y = y, color = "B")) + geom_point()

# 将两个散点图组合在一起
library(gridExtra)
grid.arrange(p1, p2, ncol = 2, bottom = "散点图")

在上面的代码中,我们首先创建了两个单独的散点图。subset() 函数基于 z 变量的值,筛选出每个数据子集。接下来,我们使用 grid.arrange() 函数将这两个散点图组合在一起。ncol = 2 表示我们希望两个图形分别在一行中进行对齐。bottom 选项表示我们希望在底部添加一个整个图形的标题。

结论

在 ggplot2 中组合多个图例需要一些额外的工作,但是可以创建出非常强大且具有吸引力的可视化。我们可以使用 theme() 函数来调整图例的位置,使用 labs() 函数来添加标题,使用 gridExtra 包中的函数将多个单独的图形组合在一起。