📜  如何将多行的ggplot2图例移动到R中的绘图底部(1)

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

如何将多行的ggplot2图例移动到R中的绘图底部

在使用ggplot2进行可视化时,图例总是默认显示在绘图区的右侧。但在某些情况下,我们可能需要将图例移动到绘图底部。接下来,本文将为大家介绍如何实现此功能。

1. 准备工作

首先,我们需要使用ggplot2绘制一个具有多行图例的示例图。这里我们以mtcars数据集为例,绘制一张关于不同汽车品牌的燃油效率(mpg)对比图。

library(ggplot2)

data("mtcars")
mtcars$brand <- rownames(mtcars)
mtcars$brand <- ifelse(grepl("^Toy", mtcars$brand), "Toyota", mtcars$brand)
mtcars$brand <- ifelse(grepl("^Merc", mtcars$brand), "Mercedes Benz", mtcars$brand)
mtcars$brand <- ifelse(grepl("^For", mtcars$brand), "Ford", mtcars$brand)

ggplot(mtcars, aes(x = brand, y = mpg, fill = factor(cyl))) +
  geom_bar(stat = "identity", position = "dodge") +
  labs(x = "Brand", y = "Miles per gallon", title = "Fuel Efficiency Comparison") +
  theme(legend.position = "right")

我们可以看到,图例中包含了三个分组变量(cylinder数)。如果将图例与图形区分开,会使得整个图片看起来更加整洁。

2. 移动图例到底部

要将图例移动到绘图底部,我们需要使用ggplot2的一个辅助包——ggpubr。

首先,我们需要安装和加载ggpubr包。

install.packages("ggpubr")
library(ggpubr)

接下来,我们可以使用ggarrange()函数将图例和绘图区分开并排放置。

p <- ggplot(mtcars, aes(x = brand, y = mpg, fill = factor(cyl))) +
  geom_bar(stat = "identity", position = "dodge") +
  labs(x = "Brand", y = "Miles per gallon", title = "Fuel Efficiency Comparison") +
  theme(legend.position = "none")

ggarrange(p, nrow = 2, common.legend = TRUE, legend = "bottom")

这里使用ggplot2的theme()函数将图例位置设为"none",并使用ggarrange()函数将图例与绘图区分开。nrow参数指定了图例的行数。common.legend参数指定了是否将所有图例合并成一个。legend参数指定了图例的位置,这里我们选择了"bottom"。

可以看到,现在我们已经成功地将图例移动到了绘图底部。如果需要进一步定制图例样式和位置,可以参考ggplot2和ggpubr的官方文档和帮助文件。

总结

本文介绍了如何将多行的ggplot2图例移动到绘图底部。需要使用ggpubr包中的ggarrange()函数实现。可以通过调整参数来进一步定制图例样式和位置。