R语言ggplot2-颜色设置调参详解

本章是ggplot2科研绘图调参的第十一个章节,前十章内容请跳转:

ggplot保姆级教程-科研绘图调参细节

library(tidyverse)
library(ggplot2)
theme_set(theme_bw())

数据集

本文使用 空气污染导致全国发病率和死亡率研究 (NMMAPS). 为了使图表易于管理,我们将数据限制在芝加哥和 1997-2000 年。有关此数据集的更多详细信息,请参阅 Roger Peng 的书 Statistical Methods in Environmental Epidemiology with R.

使用 {rio} 包中的 import&#x51FD;&#x6570; 将数据导入到我们的 R 中。为了稍后访问数据,我们使用 赋值箭头 <-< code>&#x5C06;&#x5176;&#x5B58;&#x50A8;&#x5728;&#x540D;&#x4E3A;<code>chic</code>&#x7684;&#x53D8;&#x91CF;&#x4E2D;&#x3002;<!---<-->

library(rio)
chic  import("/Users/cpf/Documents/paper/writting_blog/data/chicago-nmmaps.csv")

11.调整颜色

ggplot2 中的颜色主要使用到两个参数, color颜色和 fill填充,这两个参数都可以用来:

  1. 指定为单色
  2. 赋值给变量。

正如您在本教程开头所见, aes美学内部的变量由变量编码, aes美学外部的变量是与变量无关的属性。通过下图显示每年和每季的记录数量可以说明了这一事实:

ggplot(chic, aes(year)) +
  geom_bar(aes(fill = season), color = "grey", size = 3) +
  labs(x = "year", y = "Observation", fill = "Season:")

R语言ggplot2-颜色设置调参详解

11.1 选择单色

静态的单一颜色易于使用。我们可以为 geom 指定一种颜色:

ggplot(chic, aes(x = date, y = temp)) +
  geom_point(color = "steelblue", size = 2) +
  labs(x = "Year", y = "Temperature (°F)")

R语言ggplot2-颜色设置调参详解

如果它同时提供颜色 color(轮廓颜色)和填充 fill(填充颜色):

ggplot(chic, aes(x = date, y = temp)) +
  geom_point(shape = 21, size = 2, stroke = 1,
             color = "#3cc08f", fill = "#c08f3c") +
  labs(x = "Year", y = "Temperature (°F)")

R语言ggplot2-颜色设置调参详解

11.2分类变量颜色调整

ggplot2 中,分配给变量的颜色通过 scale_color_ 和 scale_fill_ 函数进行修改。为了对您的数据使用颜色,最重要的是您需要知道您是在处理分类变量还是连续变量。应根据变量的类型选择调色板,连续或发散调色板用于连续变量,定性调色板用于分类变量:

定性或分类变量表示可以分为组(类别)的数据类型。变量可以进一步指定为名义、有序和二元(二分)。
默认的分类调色板如下所示:

(ga  ggplot(chic, aes(x = date, y = temp, color = season)) +
  geom_point() +
  labs(x = "Year", y = "Temperature (°F)", color = NULL))

R语言ggplot2-颜色设置调参详解
手动选择变量颜色

您可以选择自己的一组颜色并通过函数 scale__manual() 将它们分配给分类变量( 可以是 colorcolourfill)。指定颜色的数量必须与类别数量匹配:

ga + scale_color_manual(values = c("dodgerblue4",
                                   "darkolivegreen4",
                                   "darkorchid3",
                                   "goldenrod1"))

R语言ggplot2-颜色设置调参详解
使用内置的定性调色板

ColorBrewer 调色板是一种流行的在线工具,用于为地图选择配色方案。不同的颜色组旨在产生具有相似外观的有吸引力的配色方案,范围从三到十二不等。这些调色板可作为 ggplot2 包中的内置函数使用,并且可以通过调用 scale_*_brewer() 来应用:

ga + scale_color_brewer(palette = "Set1")

R语言ggplot2-颜色设置调参详解
使用扩展包中的调色板

有许多扩展包提供额外的调色板。它们的用途因包的设计方式而异。有关 R 中可用调色板的广泛概述,可以使用 paletteer 包,这是 R 中使用一致语法的调色板的集合。

例子:

例如, ggthemes 包允许 R 用户访问 Tableau 颜色。 Tableau 是著名的可视化软件,具有众所周知的调色板。

library(ggthemes)
ga + scale_color_tableau()

R语言ggplot2-颜色设置调参详解

ggsci 包提供科学期刊和科幻主题的调色板。想要有一个看起来像发表在科学或自然中的颜色的主题吗?

library(ggsci)
g1  ga + scale_color_aaas()
g2  ga + scale_color_npg()

library(patchwork)
(g1 + g2) * theme_bw() * theme(legend.position = "top")

R语言ggplot2-颜色设置调参详解

11.3 数值变量颜色调整

定量变量表示可测量的数量,因此是数字变量。定量数据可以进一步分类为连续(可能是浮点数)或离散(仅限整数):

在我们的示例中,我们将要着色的变量更改为臭氧,这是一个与温度密切相关的连续变量(更高的温度 = 更高的臭氧)。函数 scale_ gradient() 是一个顺序梯度,而 scale_gradient2() 是发散的。

这是连续变量的默认 ggplot2 顺序配色方案:

gb  ggplot(chic, aes(x = date, y = temp, color = temp)) +
  geom_point() +
  labs(x = "Year", y = "Temperature (°F)", color = "Temperature (°F):")

gb + scale_color_continuous()

R语言ggplot2-颜色设置调参详解

这是不同的默认配色方案:

mid  mean(chic$temp)

gb + scale_color_gradient2(midpoint = mid)

R语言ggplot2-颜色设置调参详解
手动设置顺序配色方案

您可以通过 scale_*_gradient() 为连续变量手动设置逐渐变化的调色板:

gb + scale_color_gradient(low = "darkkhaki",
                          high = "darkgreen")

R语言ggplot2-颜色设置调参详解

温度数据是正态分布的,那么发散的配色方案(而不是顺序)。对于发散的颜色,您可以使用 scale_*_gradient2() 函数:

gb + scale_color_gradient2(midpoint = mid, low = "#dd8a0b",
                           mid = "grey92", high = "#32a676")

R语言ggplot2-颜色设置调参详解
美丽的 Viridis 调色板

Viridis 调色板不仅使您的绘图看起来漂亮且易于感知,而且色盲的人也更容易阅读并且灰度打印效果很好。

而且它们现在还附带 ggplot2!以下多面板图说明了四个 Viridis 调色板中的三个:

p1  gb + scale_color_viridis_c() + ggtitle("'viridis' (default)")
p2  gb + scale_color_viridis_c(option = "inferno") + ggtitle("'inferno'")
p3  gb + scale_color_viridis_c(option = "plasma") + ggtitle("'plasma'")
p4  gb + scale_color_viridis_c(option = "cividis") + ggtitle("'cividis'")

library(patchwork)
(p1 + p2 + p3 + p4) * theme(legend.position = "bottom")

R语言ggplot2-颜色设置调参详解

也可以将 Viridis 调色板用于离散变量:

ga + scale_color_viridis_d(guide = "none")

R语言ggplot2-颜色设置调参详解
使用扩展包中的定量调色板

许多扩展包不仅提供额外的分类调色板,还提供顺序、发散甚至循环调色板。

例子:

racrtocolors包

rcartocolors 包将漂亮的 CARTOcolors 移植到 ggplot2 并包含几个我最常用的调色板:

library(rcartocolor)
g1  gb + scale_color_carto_c(palette = "BurgYl")
g2  gb + scale_color_carto_c(palette = "Earth")

(g1 + g2) * theme(legend.position = "bottom")

R语言ggplot2-颜色设置调参详解

scico包

scico 包提供对 Fabio Crameri 开发的调色板的访问。这些调色板不仅美观而且通常不寻常,而且还是一个不错的选择,因为它们在感知上是统一和有序的。此外,它们适用于有色觉缺陷和灰度的人:

library(scico)

g1  gb + scale_color_scico(palette = "berlin")
g2  gb + scale_color_scico(palette = "hawaii", direction = -1)

(g1 + g2) * theme(legend.position = "bottom")

R语言ggplot2-颜色设置调参详解

11.4 最后修改调色板

从 ggplot2 3.0.0 的最新版本开始,可以在将图层映射到数据后修改图层美感。或者正如 ggplot2 所说:”使用 after_scale() 来标记数据缩放后的映射评估。”

那么为什么不首先使用修改后的颜色呢?由于 ggplot2 只能处理一种颜色 color和一种填充比例 fill scale,这是一个有趣的功能。仔细查看以下示例,其中我们使用 ggdark 包中的 invert_color():

library(ggdark)

ggplot(chic, aes(date, temp, color = temp)) +
  geom_point(size = 5) +
  geom_point(aes(color = temp,
                 color = after_scale(invert_color(color))),
             size = 2) +
  scale_color_scico(palette = "hawaii", guide = "none") +
  labs(x = "Year", y = "Temperature (°F)")

R语言ggplot2-颜色设置调参详解

之后更改配色方案对于 ggdarkcolorspace 包中的函数特别有趣,即 invert_color()、lighten()、darken() 和 desature()。您甚至可以组合这些功能。在这里,我们绘制了一个包含参数 arguments、颜色 color和填充 fill的箱线图:

library(colorspace)

ggplot(chic, aes(date, temp)) +
  geom_boxplot(aes(color = season,
                   fill = after_scale(desaturate(lighten(color, .6), .6))),
               size = 1) +
  scale_color_brewer(palette = "Dark2", guide = "none") +
  labs(x = "Year", y = "Temperature (°F)")

R语言ggplot2-颜色设置调参详解

请注意,您需要指定颜色和/或填充相应 geom_() 或 stat_() 的 aes() 以使 after_scale() 工作。

Original: https://blog.csdn.net/Allenmumu/article/details/119532449
Author: RookieTrevor
Title: R语言ggplot2-颜色设置调参详解

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/693129/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球