📅  最后修改于: 2023-12-03 15:15:15.797000             🧑  作者: Mango
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()
函数将x
和y
映射到散点图的横轴和纵轴,将z
映射到散点图的颜色。factor()
函数将z
转换为离散因子变量。
使用scale_color_manual()
函数设置颜色映射值和图例标题。我们可以指定颜色的名称或值。
上面的代码片段将生成以下图形和图例:
我们可以看到,图例的标题和颜色可以通过name
和values
参数进行修改。现在我们来看看如何对图例进行更高级的修改。
通过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()
函数来更改了图例的标题。