[数据分析与可视化] 数据绘图要点10-图例的构建

数据绘图要点10-图例的构建

图例是数据可视化中传达信息非常关键的部分,因此创建合适的图例非常重要。这篇文章描述了如何设置ggplot2图例中的标题、文本、位置、符号等。

ggplot2图例设置

ggplot2创建默认图例

默认情况下,只要形状特征映射到ggplot调用的aes()部分中的变量,ggplot2就会自动在图表上生成图例。因此,如果您在ggplot2中设置颜色、形状或透明度,则会默认创建图例。如果你想查看ggplot2可以设置的信息,调用ggplot2::theme即可。

# 加载ggplot2
library(ggplot2)
# 展示自带的mtcars数据
head(mtcars)
A data.frame: 6 × 11
mpgcyldisphpdratwtqsecvsamgearcarb
<dbl><dbl><dbl><dbl><dbl><dbl><dbl><dbl><dbl><dbl><dbl>
Mazda RX421.061601103.902.62016.460144
Mazda RX4 Wag21.061601103.902.87517.020144
Datsun 71022.84108 933.852.32018.611141
Hornet 4 Drive21.462581103.083.21519.441031
Hornet Sportabout18.783601753.153.44017.020032
Valiant18.162251052.763.46020.221031
# 绘图
# 横轴wt,纵轴mpg,颜色cyl,形状factor
basic <- ggplot(mtcars, aes(wt, mpg, colour = factor(cyl), shape = factor(vs) )) +
       geom_point()
basic

png

更改图例标题labs()

labs()函数允许更改图例标题。您可以为图例的每个部分指定一个标题,即图表中使用的每个美学aesthetics 。

# 在默认图表的基础上设置图例标题
basic+
  labs(
         colour = "colour",
         shape = "shape"
        )

png

图例信息的删除

通过theme()和guides()可以删除整个图例或图例的特定部分。

# 删除shape
basic + guides(shape=FALSE) +
labs(
     colour = "colour",
     shape = "shape"
    )
Warning message:
"`guides(<scale> = FALSE)` is deprecated. Please use `guides(<scale> = "none")` instead."

png

# 删除图例
basic + theme(legend.position = "none")

png

控制图例位置

ggplot2允许将图例放在任何地方。如果将图例放在图表周围,使用legend.position选项并指定top,right,bottom,或left。要将图例放在绘图区域内,指定一个长度为2的向量,两个值都在 0 和 1 之间,并给出x和y坐标即可。

# 将图例放在图表左边
basic + theme(legend.position = "left")

png

# 将图例放在图表左边
# legend.justification设置图例位置后,图例具体所处方位
basic + theme(legend.position = "left",legend.justification = c("left", "center"))

png

basic + theme(
    legend.position = c(0.55, 0.95), # 设置图例起始位置,左下角为原点,横坐标和纵坐标范围都为0到1
    legend.justification = c("right", "top"), #设置图例位置后,图例具体所处方位
    legend.box.just = "right", # 设置不同图例对齐方式
    legend.margin = margin(6, 6, 6, 6) # 设置图例内容外边距
    )

png

图例外观设置

以下是 4 个示例,展示了如何自定义图例的主要功能:

  • legend.box 自定义图例外框
  • legend.key 设置图例中每一个变量key值的展示信息
  • legend.text 设置图例字体
  • legend.title 设置图例标题
# 自定义图例外框
basic + theme(
    # 设置外框颜色
    legend.box.background = element_rect(color="red", size=2),
    # 设置外框边距
    legend.box.margin = margin(36, 6, 6, 6)
)

png

# 设置图例中每一个变量key值的展示信息
basic + theme(legend.key = element_rect(fill = "blue", colour = "black"))

png

# 自定义图例字体颜色
basic + theme(legend.text = element_text(size = 8, colour = "red"))

png

# 设置图例标题
basic + theme(legend.title = element_text(face = "bold",colour = 'red'))

png

参考

posted @ 2022-01-06 11:51  落痕的寒假  阅读(70)  评论(0编辑  收藏  举报