📜  ggplot2-使用图例(1)

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

ggplot2-使用图例

ggplot2是一个优秀的R语言数据可视化包,具有高度的灵活性和丰富的修改选项。使用ggplot2制作的图形通常需要添加图例来解释数据中的颜色和形状。本文将介绍如何使用ggplot2添加和修改图例。

添加图例

我们首先来看一个简单的例子,使用ggplot2绘制散点图,并添加一个基本的图例。

library(ggplot2)

# 创建数据集
df <- data.frame(x = rnorm(50),y = rnorm(50),z = sample(0:1,50,replace=TRUE))

# 绘制散点图
ggplot(df, aes(x,y,color=factor(z))) + 
  geom_point(size=3) + 
  scale_color_manual(values=c("red","blue"), name = "Legend Title")

我们使用aes()函数将xy映射到散点图的横轴和纵轴,将z映射到散点图的颜色。factor()函数将z转换为离散因子变量。

使用scale_color_manual()函数设置颜色映射值和图例标题。我们可以指定颜色的名称或值。

上面的代码片段将生成以下图形和图例:

我们可以看到,图例的标题和颜色可以通过namevalues参数进行修改。现在我们来看看如何对图例进行更高级的修改。

修改图例
图例位置

通过theme()函数来设置图例位置,可以使用以下参数:

  • legend.position: 图例位置("top", "bottom", "left", "right")。
  • legend.justification: 图例水平位置("left", "center", "right")。
  • legend.box: 图例是否使用一个框。
  • legend.box.just: 图例框的水平位置("left", "center", "right")。
  • legend.box.margin: 图例框的边距。
# 设置图例位置和框
ggplot(df, aes(x,y,color=factor(z))) + 
  geom_point(size=3) + 
  scale_color_manual(values=c("red","blue"), name = "Legend Title") + 
  theme(legend.position="top", legend.box=TRUE, 
        legend.box.just = "right", legend.box.margin = margin(c(0, 0, 10, 0)))

上面的代码将生成以下图形和图例:

图例标题和文本格式

我们可以使用以下参数来设置图例的标题和文本格式:

  • legend.title: 图例标题。
  • legend.text: 图例文本。
  • legend.title.align: 图例标题对齐方式。
  • legend.text.align: 图例文本对齐方式。
  • legend.title.font: 图例标题字体格式。
  • legend.text.font: 图例文本字体格式。
library(extrafont)
font_import()            # 导入所有装在电脑中的字体
loadfonts()              # 载入字体

# 设置字体格式
font <- "SimSun-ExtB"
title_font <- paste0(font, ", ", "bold")
text_font <- paste0(font, ", ", "plain")

ggplot(df, aes(x,y,color=factor(z))) +
  geom_point(size=3) + 
  scale_color_manual(values=c("red","blue"), 
                     name = "图例标题:文本格式",
                     labels = c("Label 1", "Label 2")) + 
  theme(legend.title = element_text(size=15, color="blue", face="bold", 
                                    family=title_font, hjust = 0.5, vjust = 0.5), 
        legend.text = element_text(size=12, color="black", face="plain", 
                                   family=text_font, hjust = 0.5, vjust = 0.5))

上面的代码将生成以下图形和图例:

修改图例颜色

我们可以使用guides()函数来更改图例的颜色:

# 修改图例颜色
ggplot(df, aes(x,y,color=factor(z))) + 
  geom_point(size=3) + 
  scale_color_manual(values=c("red","blue"), 
                     name = "Legend Title",
                     labels = c("Label 1", "Label 2")) + 
  guides(color = guide_legend(title = "New Title", 
                              title.theme = element_text(size = 15,
                                                         color = "red",
                                                         family = font,
                                                         face = "bold", 
                                                         hjust = 0.5, vjust = 0.5),
                              override.aes = list(size = 5, alpha = 0.7)))

上面的代码将生成以下图形和图例:

在上面的代码中,我们使用override.aes参数更改了图例的大小和不透明度。我们还使用了guide_legend()函数来更改了图例的标题。