📅  最后修改于: 2023-12-03 15:23:17.263000             🧑  作者: Mango
在 ggplot2 中,我们可以使用 ggplot()
函数来创建一个基础图形,然后使用 +
符号来添加各种图层和组件。每个图层的图例通常会自动生成,但如果我们需要在同一图形中组合多个图例,则需要进行特殊配置。
首先,让我们创建一个基础的 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)。在图例中,我们可以看到一个包含两个条目的自动生成图例。
让我们为此基础图例添加一个标题,以及将其移动到右上角:
# 移动图例位置
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(垂直)的坐标。
接下来,让我们为同一图形中的每个数据子集(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
包中的函数将多个单独的图形组合在一起。