了解用于处理色边距的scale_fill_continuous_divergingx参数输入

2024-05-13

这个问题是我上一个问题的延续here https://stackoverflow.com/questions/58718527/setting-midpoint-for-continuous-diverging-color-scale-on-a-heatmap.

我有一个带有可用数据集的热图。数据集粘贴如下:

library(ggplot2)
library(colorspace)

bigtest <- structure(list(x = c(-8, -7, -6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8,
                                -8, -7, -6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, -8,
                                -7, -6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, -8, -7,
                                -6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, -8, -7, -6,
                                -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, -8, -7, -6, -5,
                                -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8),
                          y = c(0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                                 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
                                 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3,
                                 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4,
                                 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5,
                                 5, 5, 5, 5, 5, 5, 5, 5),
                          z = c(1281.35043, 576.76381, 403.46607,
                                363.28815, 363.13356, 335.04997, 246.93314, 191.56371, 165.35087,
                                165.35087, 136.33712, 83.91203, 107.5773, 56.91087, 56.91089,
                                54.16559, 54.18172, 1841.60838, 1098.66304, 424.80686, 363.52776,
                                363.13355, 335.04998, 246.93314, 191.69473, 165.35087, 165.35087,
                                136.33712, 83.91204, 107.57729, 56.91087, 56.91088, 54.16421,
                                54.16794, 2012.52217, 1154.7927, 446.79023, 363.31379, 363.13356,
                                335.04997, 246.93314, 191.9613, 165.35087, 165.35087, 136.33712,
                                83.91202, 107.57731, 56.91088, 56.91088, 54.1642, 54.16559, 2077.10354,
                                1217.43403, 450.18301, 363.44225, 363.13357, 363.13363, 253.99753,
                                218.43223, 165.35087, 165.35014, 136.33712, 83.91203, 107.57822,
                                82.87399, 56.91087, 54.1642, 54.1642, 2092.56391, 1229.49925,
                                451.15179, 392.30728, 363.13356, 363.13282, 264.18944, 218.4308,
                                165.35087, 165.35044, 136.33712, 83.91202, 83.92709, 82.87353,
                                82.87406, 56.54491, 54.16421, 2206.93318, 1231.66411, 457.37767,
                                392.41558, 363.13357, 363.13283, 335.06272, 191.95211, 165.35087,
                                165.35014, 136.33712, 136.35211, 112.12755, 82.73634, 82.87353,
                                82.87418, 54.16421)),
                     row.names = c(NA, -102L),
                     class = c("tbl_df", "tbl", "data.frame"))

我正在使用以下代码部分生成热图:

ggplot(bigtest, aes(x = x, y = y)) +
  geom_tile(aes(fill = z)) +
  scale_fill_continuous_divergingx(palette = 'RdBu', rev = TRUE, mid = 347.48, l3 = 54, p3 = 2206, p4 = 325)

我对图中的期望是白色以特定值为中心,而其他渐变则根据高于或低于该值而发散。但是,通过使用不同的参数,我似乎并不完全理解参数的含义l3, p3, and p4所指的。当我在审查文档 https://rdrr.io/cran/colorspace/man/scale_colour_continuous_divergingx.html对于此功能,建议自定义比例的参数来自divergingx_hclcolorspace 包中的函数。

审查时divergingx_hcl 文档 https://rdrr.io/cran/colorspace/man/divergingx_hcl.html它指出它们对应于不同的输入参数的坐标。我完全迷失了,完全不知道这是什么。任何帮助我理解这些参数的指导(不仅仅是l3, p3, and p4但其他参数)将不胜感激。

Created on 2019-11-07 by the reprex package https://reprex.tidyverse.org (v0.3.0)


首先,所有的颜色都被指定为HCL(色调、彩度、亮度),分别对应颜色的类型(红、绿、蓝等)、颜色的鲜艳度(低彩度是灰色,高彩度是非常鲜艳的) ),以及颜色的亮度(高亮度为白色,低亮度为黑色)。

参数l3表示色阶一端颜色的亮度分量。 (l1是另一端的亮度,并且l2是中间的亮度。)亮度从 0 到 100。因此,如果您希望末端的颜色更暗,请将亮度设置为较低的值。参数p3 and p4是控制颜色从中点过渡到端点的速度的指数。一般来说,接近 0 的值意味着更快的转换,大于 1 的值意味着更慢的转换。你不太可能想要p3 or p4值大于 10。

要获取调色板的默认参数,您可以使用divergingx_palettes()命令:

library(colorspace)
divergingx_palettes('RdBu')
#> HCL palette
#> Name: RdBu
#> Type: Diverging (flexible)
#> Parameter ranges:
#>  h1 h2  h3 c1 c2 c3 l1 l2 l3  p1
#>  20 NA 230 60  0 50 20 98 15 1.4

Created on 2019-11-07 by the reprex package https://reprex.tidyverse.org (v0.3.0)

这表明由指定的终点处的颜色l3天已经很黑了。改变l3从 15 到 0 会使颜色变暗一点,但不会太多。更远,p2, p3, and p4没有指定,这意味着它们都取自p1,因此是 1.4。因此,颜色插值比线性插值稍慢。

有了这些知识,下面的例子就应该有意义了。要了解更多信息,我建议阅读色彩空间网站上的各种文章:http://colorspace.r-forge.r-project.org/ http://colorspace.r-forge.r-project.org/

首先是数据:

library(ggplot2)
library(colorspace)

bigtest <- structure(list(x = c(-8, -7, -6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8,
                                -8, -7, -6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, -8,
                                -7, -6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, -8, -7,
                                -6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, -8, -7, -6,
                                -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, -8, -7, -6, -5,
                                -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8),
                          y = c(0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                                0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
                                1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3,
                                3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4,
                                4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5,
                                5, 5, 5, 5, 5, 5, 5, 5),
                          z = c(1281.35043, 576.76381, 403.46607,
                                363.28815, 363.13356, 335.04997, 246.93314, 191.56371, 165.35087,
                                165.35087, 136.33712, 83.91203, 107.5773, 56.91087, 56.91089,
                                54.16559, 54.18172, 1841.60838, 1098.66304, 424.80686, 363.52776,
                                363.13355, 335.04998, 246.93314, 191.69473, 165.35087, 165.35087,
                                136.33712, 83.91204, 107.57729, 56.91087, 56.91088, 54.16421,
                                54.16794, 2012.52217, 1154.7927, 446.79023, 363.31379, 363.13356,
                                335.04997, 246.93314, 191.9613, 165.35087, 165.35087, 136.33712,
                                83.91202, 107.57731, 56.91088, 56.91088, 54.1642, 54.16559, 2077.10354,
                                1217.43403, 450.18301, 363.44225, 363.13357, 363.13363, 253.99753,
                                218.43223, 165.35087, 165.35014, 136.33712, 83.91203, 107.57822,
                                82.87399, 56.91087, 54.1642, 54.1642, 2092.56391, 1229.49925,
                                451.15179, 392.30728, 363.13356, 363.13282, 264.18944, 218.4308,
                                165.35087, 165.35044, 136.33712, 83.91202, 83.92709, 82.87353,
                                82.87406, 56.54491, 54.16421, 2206.93318, 1231.66411, 457.37767,
                                392.41558, 363.13357, 363.13283, 335.06272, 191.95211, 165.35087,
                                165.35014, 136.33712, 136.35211, 112.12755, 82.73634, 82.87353,
                                82.87418, 54.16421)),
                     row.names = c(NA, -102L),
                     class = c("tbl_df", "tbl", "data.frame"))

现在的情节:

ggplot(bigtest, aes(x = x, y = y)) +
  geom_tile(aes(fill = z)) +
  scale_fill_continuous_divergingx(
    palette = 'RdBu', rev = TRUE,
    mid = 347.48
  )
ggplot(bigtest, aes(x = x, y = y)) +
  geom_tile(aes(fill = z)) +
  scale_fill_continuous_divergingx(
    palette = 'RdBu', rev = TRUE,
    mid = 347.48,
    p3 = .2,
    p4 = .2
  )
ggplot(bigtest, aes(x = x, y = y)) +
  geom_tile(aes(fill = z)) +
  scale_fill_continuous_divergingx(
    palette = 'RdBu', rev = TRUE,
    mid = 347.48,
    l3 = 0,
    p3 = .2,
    p4 = .2
  )

Created on 2019-11-07 by the reprex package https://reprex.tidyverse.org (v0.3.0)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

了解用于处理色边距的scale_fill_continuous_divergingx参数输入 的相关文章

  • 如何提取与 R 中主题 ID 列表匹配的行?

    我有一个包含许多主题 ID 的数据框 每个主题都有重复观察 我还有一个单独的数据框 其中只有一个主题 ID 列表 我想从更大的数据框中匹配和提取 如何以允许我引用不同数据帧中的SubjectID列表的方式编写代码 不确定我是否完全理解这个问
  • 从 R 中的向量中选择所有可能的元组

    我正在尝试用 R 编写一个程序 当给定一个向量时 将返回所有可能的tuples http en wikipedia org wiki Tuples该向量中的元素 例如 元组 c a b c c a b c 出租车 c a c c b c c
  • 将命名参数列表传递给函数?

    我想编写一个小函数来从适当的分布生成样本 例如 makeSample lt function n dist params values lt makeSample 100 unif list min 0 max 10 values lt m
  • R::bigmemory - 如何创建角色big.matrix?

    我尝试使用bigmemory封装在R我一开始就陷入困境 我愿意 temp lt matrix paste a 1 10 5 2 并得到一个字符矩阵 没关系 但后来我尝试 x lt as big matrix temp type char 我
  • ggplot2可以在一个图例中分别控制点大小和线大小(线宽)吗?

    一个使用的例子ggplot2绘制数据点组和连接每组均值的线 并使用相同的映射aes for shape并为linetype p lt ggplot mtcars aes gear mpg shape factor cyl linetype
  • 将 Instagram/youtube 嵌入 Shiny R 应用程序

    我想通过点击图表来播放 Instagram 或 Youtube 视频 例如显示异常值等 到目前为止 明确告诉 Shiny 视频内容是有效的 require shiny require ggplot2 data df lt data fram
  • .wav 文件长度/持续时间,无需读入文件

    有没有办法提取有关 wav 文件长度 持续时间的信息 而无需在 R 中读取文件 我有数千个这样的文件 如果我必须阅读每个文件才能找到其持续时间 那将需要很长时间 Windows 文件资源管理器为您提供了打开 长度 字段的选项 并且您可以查看
  • 将年月格式转换为 POSIXct [重复]

    这个问题在这里已经有答案了 我有一些年月形式的数据 我想将其格式化以用于绘图ggplot date lt c 2016 03 2016 04 2016 05 2016 06 2016 07 2016 08 2016 09 2016 10 2
  • 使用 broom 和 tidyverse 总结 r 平方游戏

    我发布了一个问题here https stackoverflow com questions 48627287 getting adjusted r squared value for each line in a geom smooth
  • 如何计算R中移动窗口内的平均斜率

    我的数据集包含2个变量y 和 t 05s y 每 05 秒测量一次 我正在尝试计算移动中的平均坡度20秒窗口 即计算第一个 20 秒斜率值后 窗口向前移动一个时间单位 05 秒 并计算下一个 20 秒窗口 在以下位置生成连续 20 秒斜率值
  • 通过间接引用列来修改数据框中的某些值

    我正在整理一些数据 我们将失败的数据分类到垃圾箱中 并按批次计算每个分类箱的有限产量 我有一个描述排序箱的元表 这些行按升序测试顺序排列 一些排序标签带有非语法名称 sort tbl lt tibble tribble weight lab
  • 绘制点之间的所有线

    我有以下 R 代码 x lt c 0 01848598 0 08052353 0 06741172 0 11652034 y lt c 0 4177541 0 4042247 0 3964025 0 4074685 d lt data fr
  • 从命令行运行 R 代码 (Windows)

    我在名为 analysis r 的文件中有一些 R 代码 我希望能够从命令行 CMD 运行该文件中的代码 而无需通过 R 终端 并且我还希望能够传递参数并在我的代码中使用这些参数 例如就像下面的伪代码 C gt execute r scri
  • R独特的列或行与NA无可比拟

    有谁知道如果incomparables的论证unique or duplicated 曾经被实施过incomparables FALSE 也许我不明白它应该如何工作 无论如何 我正在寻找一个巧妙的解决方案 以仅保留与另一列相同的唯一列 或行
  • 使用 R 选择第一个非 NA 值

    df lt data frame ID c 1 1 1 2 3 3 3 test c NA 5 5 6 4 NA 7 3 NA 10 9 我想创建一个名为 value 的变量 它是每个单独 ID 测试的第一个非 NA 值 对于只有NA的个体
  • 将每列的值乘以 R 中另一个 data.frame 中的权重

    我有两个data frames df and weights 代码如下 df看起来像这样 id a b d EE f 1 this 0 23421153 0 02324956 0 5457353 0 73068586 0 5642554 2
  • 只读取选定的列

    谁能告诉我如何仅读取下面每年数据的前 6 个月 7 列 例如使用read table Year Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec 2009 41 27 25 31 31 39 2
  • 使用 Shiny 发布平行坐标图表时出现“错误:路径[1]="”:没有这样的文件或目录”

    我有一个似乎很常见但我还没有找到解决方案的问题 当尝试使用 rCharts Parcoords 发布 Web 应用程序时 出现以下错误 错误 路径 1 没有这样的文件或目录 奇怪的是 该应用程序在我的笔记本电脑上运行得很好 下面是我正在使用
  • 基于时间窗口的不规则时间序列的优化滚动函数

    有没有办法使用 rollapply 来自zoo包或类似的东西 优化功能 rollmean rollmedian等 使用基于时间的窗口计算滚动函数 而不是基于大量观察的函数 我想要的很简单 对于不规则时间序列中的每个元素 我想计算一个具有 N
  • 在 r 中的 group_by 之后建模后取消列表列的嵌套

    我想对所有组进行线性回归group by 将模型系数保存在列表列中 然后使用 unnest 扩展列表列 这里我用的是mtcars以数据集为例 注 我想用do here becausebroom tidy 不适用于所有型号 mtcars gt

随机推荐