ggplot2 | R语言中的配色方法汇总(Ⅲ):ggplot2的颜色标度函数

3 ggplot2工具包

在前面几篇推文中,介绍的配色方法都是通过将已生成的颜色序列赋值给绘图函数的参数来实现,这也是一种比较容易理解的方式。而在ggplot2绘图系统中,除这种方式外,还可以使用它的颜色标度函数进行配色。

标度函数主要用于建立绘图数据与图形属性之间的联系,这类函数命名具有一定的规律性。标度函数涉及的属性类别包括:透明度(alpha)、表观颜色(color或colour)、填充颜色(fill)、线型(linetype)、形状(shape)、尺寸(size)、坐标轴(x、y)。

本篇主要介绍颜色标度函数,其中表观颜色(color或colour)和填充颜色(fill)虽然涂色的位置不同,但对应的标度函数的用法一致,因此在这里不作区分。

颜色标度函数的选取要根据数据类型考虑映射方式。

离散型变量

  • scale_color_hue()

离散型变量在这里是指因子变量(factor),离散映射默认的颜色标度函数是scale_color_hue(),采用的是HCL配色模型:

scale_colour_hue(
  ...,
  h = c(0, 360) + 15,
  c = 100,
  l = 65,
  h.start = 0,
  direction = 1,
  na.value = "grey50",
  aesthetics = "colour"
)
  • h:包含两个元素的向量,表示色相(H)的取值范围;

  • c、l:饱和度(C)和亮度(L)的取值;

  • h.start:色相取值的起始值;

  • direction:1表示在色环上按顺时针取色,-1表示按逆时针取色。

library(ggplot2)
library(patchwork)
df01 <- data.frame(x = c("a", "b", "c", "d"),
                   y = c(3, 4, 1, 2))
## 默认状况
p01 <- ggplot(df01, aes(x, y, fill = x)) + 
  geom_bar(stat = "identity") + 
  labs(x = NULL, y = NULL) +
  theme(legend.position = "none")
## 使用颜色标度函数
p11 <- p01 + scale_fill_hue(h = c(120, 240), c = 30)

p01 + p11
  • scale_color_brewer()

scale_color_brewer()函数可以直接调用RColorBrewer工具包的调色板。

scale_color_brewer(
  ...,
  type = "seq",
  palette = 1,
  direction = 1,
  aesthetics = "colour"
)
  • type:类型参数,即RColorBrewer工具包的三类调色板:seq、div、qual;

  • palette:调色板名称或序号,具体见RColorBrewer工具包。

  • 注:scale_color_brewer()中的seqdiv类型不属于连续映射,而是有序的离散型映射,因此不能用于连续型变量。

p21 <- p01 + scale_fill_brewer(type = "qual", palette = "Set2")
p22 <- p01 + scale_fill_brewer(palette = "OrRd")

p21 + p22
  • scale_color_grey()

scale_color_grey()函数使用的是灰度配色模型。

scale_colour_grey(
  ...,
  start = 0.2,
  end = 0.8,
  na.value = "red",
  aesthetics = "colour"
)
  • start、end:灰度的起始、终止值。

p31 <- p01 + scale_fill_grey()
p32 <- p01 + scale_fill_grey(start = 0, end = 0.5)

p31 + p32
  • scale_color_manual()

scale_color_manual()函数采取的是手动赋值的方法,也就是直接把颜色序列赋值给它的参数value

p41 <- p01+ scale_fill_manual(values = c("sienna1", "sienna4",
            "hotpink1", "hotpink4"))
p42 <- p01 + scale_fill_manual(values = c("tomato1", "tomato2",
            "tomato3", "tomato4"))

p41 + p42
  • scale_color_identity()

scale_color_identity()函数是一种特殊的离散映射方式,因为它的映射变量本身就是颜色编码。

df02 <- data.frame(x = c("sienna1", "sienna4",
                         "hotpink1", "hotpink4"),
                   y = c(3, 4, 1, 2))
## 默认状况
p02 <- ggplot(df02, aes(x, y, fill = x)) + 
  geom_bar(stat = "identity") + 
  labs(x = NULL, y = NULL) +
  theme(legend.position = "none")
## 使用颜色标度函数
p51 <- p02 + scale_fill_identity()

p02 + p51

连续型变量

对于连续型变量,它的映射方式有两种:

  • 一种是采用连续的调色板使每个数值都对应一种颜色,即真正的连续映射(continuous);

  • 另一种是将其离散化,即分箱映射(binned)。

  • scale_colour_gradient()

连续型变量的默认离散方式是连续映射,连续映射默认的颜色标度函数是scale_colour_gradient()。语法结构如下:

scale_colour_gradient(
  ...,
  low = "#132B43",
  high = "#56B1F7",
  space = "Lab",
  na.value = "grey50",
  guide = "colourbar",
  aesthetics = "colour"
)
  • 该函数只需要使用lowhigh参数分别指定连续变量最小值和最大值对应的颜色,即可自动计算一条连续的调色板。

set.seed(135)
df <- data.frame(x = 1:40, y = rnorm(40))
## 默认状况
p03 <- ggplot(df, aes(x, y, color = y)) + 
  geom_point(size = 2) + 
  labs(x = NULL, y = NULL)
## 使用颜色标度函数
p61 <- p03 + scale_color_gradient(low = "blue", high = "red")

p03 + p61

当连续型变量中包含具有特殊意义的中间值如0、1,可以使用scale_color_gradient2()函数:

scale_color_gradient2(
  ...,
  low = muted("red"),
  mid = "white",
  high = muted("blue"),
  midpoint = 0,
  space = "Lab",
  na.value = "grey50",
  guide = "colourbar",
  aesthetics = "colour"
)

当有多个中间值时,可以使用scale_colour_gradientn()函数:

scale_colour_gradientn(
  ...,
  colours,
  values = NULL,
  space = "Lab",
  na.value = "grey50",
  guide = "colourbar",
  aesthetics = "colour",
  colors
)
  • colours:颜色向量,函数会在向量每两个元素之间生成一个连续调色板。

示例如下:

p62 <- p03 + scale_color_gradient2(low = "blue",
             mid = "green", high = "red")
p63 <- p03 + scale_color_gradientn(colors = c("blue", "green",
             "yellow", "red"),
             breaks = c(-Inf, -1, 1, Inf))

p62 + p63
  • scale_color_steps()

scale_color_steps()函数用于连续变量的分箱映射,通过比较下面两幅图和前面两幅图可以很容易理解其含义:

p71 <- p03 + scale_color_steps(low = "blue", high = "red")
p72 <- p03 + scale_color_steps(low = "blue", high = "red",
             breaks = c(-Inf, -1, 1, Inf))

p71 + p72

scale_colour_gradient()函数一样,scale_color_steps()函数也有两个扩展形式:scale_color_steps2()scale_color_stepsn(),这里不再演示。

  • 14
    点赞
  • 119
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: 学习 R 语言的 ggplot2 语法的方法有很多,下面是一些建议: 1. 首先,可以阅读 ggplot2 官方文档,了解 ggplot2 的基本概念和使用方法。官方文档链接:https://ggplot2.tidyverse.org/ 2. 可以在网上搜索 ggplot2 教程,找到适合自己的学习方式。一些可以参考的资源包括: - R 语言文社区(https://www.r-project.org.cn/)上的 ggplot2 教程:https://www.r-project.org.cn/document/r-tutor/r-tutor-ggplot2.html - 菜鸟教程(https://www.runoob.com/)上的 ggplot2 教程:https://www.runoob.com/r/r-ggplot2-intro.html - 还有一些博客、论坛等网站上的 ggplot2 教程,如:https://www.cnblogs.com/datageek/p/10840165.html 3. 可以尝试自己动手练习,使用 ggplot2 绘图。一些可以参考的练习题目包括: - 绘制简单的直方图、饼图等 - 绘制多变量数据的散点图、条形图等 - 绘制分组数据的折线图、箱线图等 4. 可以加入一些学习群或论坛,和其他学习者交流学习心得。 希望这些建议能帮助你学习 ggplot2 语法。 ### 回答2: 学习R语言ggplot2语法可以通过以下几个步骤进行: 1. 了解ggplot2的基本概念:ggplot2R语言用于数据可视化的一个包,它基于“图层”和“映射”的思想进行数据绘图。在开始学习ggplot2之前,先了解它的核心概念和基本原理是非常重要的。 2. 学习ggplot2的基本语法:ggplot2的语法相对简洁直观,通过使用“+”符号来逐步构建图形。学习ggplot2的语法包括了解如何在图层添加数据、映射、几何对象、标度、分面等元素。 3. 掌握ggplot2的常用函数ggplot2有许多常用的函数,如qplot()、ggplot()、aes()等。这些函数可以用来创建一个基础图形、设置绘图参数、进行数据映射等。学习这些常用函数能够帮助我们更好地理解和使用ggplot2。 4. 阅读相关文档和示例:ggplot2有丰富的文档和示例,可以从ggplot2官方文档或书籍找到学习资源。阅读这些文档和示例能够帮助我们更深入地了解ggplot2的各种功能和用法。 5. 练习和实践:学习ggplot2语法最重要的一点是不断练习和实践。通过自己动手编写代码、绘制图形,探索和尝试不同的参数和选项,可以逐渐掌握ggplot2的语法和技巧。 总之,学习ggplot2的语法需要通过了解基本概念、学习基本语法、掌握常用函数、阅读文档和示例,并进行实践和练习。通过不断的学习和实践,我们可以逐步掌握并熟练运用ggplot2的语法,从而能够更好地进行数据可视化。 ### 回答3: 学习R语言ggplot2语法需要按照以下步骤进行: 1. 了解ggplot2的基本概念和原理。ggplot2是一个用于数据可视化的R包,其基于图层(layer)的概念,可以通过逐渐添加图层来构建复杂的图形。理解图层的概念对于学习ggplot2的语法非常重要。 2. 学习ggplot2的基本语法。ggplot2的语法基于“+”符号,通过逐步组合不同的图层和美学映射(aesthetic mappings)来构建图形。掌握基本的语法结构,包括ggplot()函数、aes()函数和geom_*()函数,是学习ggplot2的关键。 3. 阅读官方文档和教程。ggplot2官方文档提供了详细的介绍和示例,可以通过查看文档来学习不同的图层和美学映射的用法。此外,还有许多在线教程和书籍可供参考,例如《ggplot2: Elegant Graphics for Data Analysis》。 4. 练习绘制图形。学习ggplot2最好的方式是进行实践。可以通过使用现有的数据集或者自己创建数据集来练习绘制图形。不断尝试不同的图层和美学映射,探索不同的图形效果和展示方式。 5. 参考其他人的代码和作品。通过查看其他人的ggplot2代码和图形作品,可以学习到更多实际应用的技巧和经验。可以在GitHub上搜索ggplot2相关的项目和资源,也可以参加R语言社区的讨论和交流。 总之,要学习R语言ggplot2语法,需要理解ggplot2的基本概念和语法结构,阅读官方文档和教程,进行实践练习,并参考其他人的代码和作品。通过不断的学习和实践,就可以掌握ggplot2的语法,从而能够使用ggplot2创建出美观且富有表达力的数据可视化图形。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值