了解用于处理色边距的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中的预测和预测函数之间的区别

    两者之间有什么区别吗predict and forecast R 中的函数 如果是 在哪些具体情况下应该使用它们 Intro predict 适用于多种 R 对象 模型 基础库的一部分 forecast 对于时间序列 预测包的一部分 参见示
  • 如何禁用“保存工作区图像?” R 中的提示?

    当我退出交互式 R shell 时 它每次都会显示一个烦人的提示 gt gt Save workspace image y n c n 我总是对此回答 不 因为如果我想保存我的工作 我就会这么做before试图退出 如何去掉这个提示呢 No
  • 在 R 中根据时间序列数据制作 3D 曲面

    我有一个大型数据集 我想从中制作 3D 表面 我希望 x 轴为日期 y 轴为时间 24 小时 z 轴 高度 为我的值 我是 R 初学者 所以越简单越好 http www quantmod com examples chartSeries3d
  • 使用两列数据分割数据帧并对结果数据帧列表应用通用转换

    我想根据两列中的值将一个大数据帧拆分为一个数据帧列表 然后 我想对结果列表中的所有数据帧应用通用数据转换 滞后转换 我知道 split 命令 但只能让它一次处理一列数据 您需要将所有想要分割的因素放在一个列表中 例如 split mtcar
  • 如何很好地注释 ggplot2(手册)

    Using ggplot2我通常使用geom text和类似的东西position jitter注释我的情节 然而 对于一个漂亮的情节 我经常发现手动注释是值得的 像下面这样 data2 lt structure list type str
  • 在 R 中编写多重积分函数

    为了将以下内容转换为函数 我想知道如何用 R 代码编写以下二重积分 bar x mu 假设pi0 and pi1以向量化方式实现函数 pi 0 和 pi 1 可能的解决方案是 integral lt function n mu s pi0
  • 如何根据值扩展数据框? [复制]

    这个问题在这里已经有答案了 我有以下输入数据框 df lt data frame x c a b c y c 4 5 6 from c 1 2 3 to c 2 4 6 df x y from to 1 a 4 1 2 2 b 5 2 4
  • 有什么方法可以访问 makeActiveBinding 安装的函数吗?

    标题基本上说明了一切 如果我这样做 makeActiveBinding x function runif 2 GlobalEnv x 1 0 7332872 0 4707796 x 1 0 5500310 0 5013099 那我有什么办法
  • R + ggplot2 - 无法分配大小为 128.0 Mb 的向量

    我有一个 4 5MB 9 223 136 行 的文件 其中包含以下信息 0 0 0 0147938 3 67598e 07 0 0226194 7 35196e 07 0 0283794 1 10279e 06 0 033576 1 470
  • dplyr::mutate 添加多个值

    网上有几个与此相关的问题dplyr Github 存储库 https github com hadley dplyr已经 并且至少有一个相关的问题 但没有一个问题完全涵盖了我的问题 我认为 在 dplyr mutate 调用中添加多列 ht
  • 挖泥机子集 (MuMIn) - 如果存在主效应,则必须包括交互作用

    我正在使用 dredge MuMIn 进行一些探索性工作 在此过程中 我想将两个变量设置为仅当它们之间存在相互作用时才允许一起出现 即它们不能仅作为主要效果一起出现 使用样本数据 我想挖掘模型 fm1 尽管它可能没有意义 如果变量 GNP
  • 如何在 R 中更新和重新编译 nlme 源代码

    我正在尝试更新 nlme 包 以便我可以在 gls 命令中使用大圆距离进行相关性 我正在尝试使用指定的更改来编辑源代码here http r 789695 n4 nabble com nlme spatial autocorrelation
  • 将角色分成几部分

    我观察到以下特征 l lt mod range1 seq m n 0 1 range2 seq 2 2 0 1 range3 seq 2 2 0 1 在 R 中使用正则表达式我想要拆分l在以下结构中 1 mod range1 seq m n
  • 将儒略日期转换为 PosixCt 日期

    我发现自己在解决这个问题 我需要将 R 中的儒略日期转换为正常日期 YYYY MM DD 我知道我可以指定as Date julian date origin 但我不知道应该提供哪个来源 我的朱利安日期类似于 2458010 2458011
  • 使用 ggplot 将条形图的列与线图的点对齐

    当线图的点与条形图的条具有相同的 x 轴时 有什么方法可以使用 ggplot 将它们对齐 这是我尝试使用的示例数据 library ggplot2 library gridExtra data data frame x rep 1 27 e
  • 如何解决在Windows中运行R时出现“剪贴板缓冲区已满且输出丢失”错误?

    我正在尝试将一些数据直接从 R 复制到我的 Windows 计算机中的剪贴板 我发现在一些网站上使用 file clipboard 可以工作 确实如此 但对于非常小的数据集 例如 如果我复制一个小数据集 100 个 obs 它会顺利工作 d
  • 重叠并固定小平面中的 x 尺度(尺度=“自由”)以制作电影

    在另一篇文章中 Justin 的帮助下 我用以下方法绘制了模拟结果facet gridggplot2 中的选项 包含数据和答案的帖子在这里 使用facet grid选项通过ggplot2绘制数据框的列 https stackoverflow
  • 使用 data() 的 R 包命名空间问题 -- 找不到数据集

    我在尝试在我自己的包中导入包 即 robfilter 时遇到了问题 我尝试使用它的方法之一 adore filter 在这一行失败 data critvals 出现错误 未找到数据集 critvals 如果我通过 require robfi
  • 在 R 的 stargazer 表中设置注释格式

    我在用stargazer包来生成 回归输出 表 一切都在奇迹般地进行 直到我开始编辑笔记 First 换行很难 但是 Bryansuggests https stackoverflow com questions 21720264 star
  • 有条件地将字符串转换为特定数值

    我确信对此有一个简单的答案 但我已经扫描了堆栈溢出 但无法找到解决方案 似乎 sapply 和 ifelse 函数的组合可能可以完成这项工作 但我不确定 所以我有一个包含字符的数据框 除了一列是数值 Create dataframe whi

随机推荐