ggplot2刻度填充梯度与离散上限

2024-03-17

我正在寻找价值热图。我希望热图从表示低值的蓝色(示例代码中的 0)变为表示高值的绿色(示例代码中的 75)。但是,数据包含大于 75 的值。我希望任何大于 75 的值都用红色填充。

总而言之,我希望填充从 0 到 75(蓝色)到绿色(绿色),任何大于 75 的值都填充为红色。我现在的代码可以做到这一点,但仍然以 76-100 的值从绿色缩放到红色,而不是让它们全部变成红色。

我在帖子中使用了布莱恩·迪格斯的答案(ggplot2 热图,带有范围值的颜色 https://stackoverflow.com/questions/10981324/ggplot2-heatmap-with-colors-for-ranged-values),但该答案并未涵盖如何填充超出梯度比例上限的所有值。

该帖子(ggplot geom_point() 具有基于特定离散值的颜色 https://stackoverflow.com/questions/29966582/ggplot-geom-point-with-colors-based-on-specific-discrete-values)似乎回答了 geom_point 的一个非常相似的问题,但我在将其适应 geom_tile 时遇到了困难。

我的示例代码如下,感谢任何帮助!

#Check packages to use in library
{
  library('ggplot2')
  library('scales')
}

#Data

horizontal_position <- c(-2, -1, 0, 1, 2)
vertical_position <- c(-2, -2, -2, -2, -2, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2)
data_val <- sample(0:100, 25)
all_data <-data.frame(horizontal_position, vertical_position, data_val)

     all_data %>%
      ggplot(aes(horizontal_position, vertical_position)) +
      geom_tile(aes(fill = data_val), colour = "transparent") + 
      geom_text(aes(label = data_val),colour="white")+
      scale_fill_gradientn(colours = c("blue", "lightblue", "lightgreen", "green", "red"),
                           breaks=c(0,25,50,75,Inf),
                           guide = "colorbar")

这是一个部分解决方案,它为图形着色,但使图例不完全正确:

all_data %>% 
  mutate(val2 = replace(data_val, data_val > 75, NA)) %>% 
  ggplot(aes(horizontal_position, vertical_position)) +
  geom_tile(aes(fill = val2), colour = "transparent") + 
  geom_text(aes(label = data_val),colour="white")+
  scale_fill_gradientn(colours = c("blue", "lightblue", "lightgreen", "green"),
                       breaks=c(0,25,50,75,Inf),
                       na.value = "red")

诀窍是将你的越界值设置为NA,在大多数审美尺度中具有特殊的可选价值。当然,如果您的实际数据具有真实的 NA,那么这种情况就会崩溃,并且正如我所提到的,让它显示在颜色栏中是另一个泥潭。

编辑添加:快速搜索提出了一些解决方案:将 NA 值的框添加到连续图的 ggplot 图例中 https://stackoverflow.com/questions/42365483/add-a-box-for-the-na-values-to-the-ggplot-legend-for-a-continous-map

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

ggplot2刻度填充梯度与离散上限 的相关文章

  • 使用从变量中选择的列名称逐行索引数据框

    考虑以下数据框 TEST lt structure list Value c NA NA NA NA NA NA NA NA NA NA NA NA Select structure c 2L 1L 3L 2L 2L 1L 1L 2L 1L
  • 安装 R 包。包含目录为空。开发标头

    我目前正在尝试运行一些最初在 2 11 0 下运行的 R 代码 我使用的 R 版本 2 14 1 无法运行该代码 我不熟悉 R 及其向后兼容性 据我所知 我的问题可能与版本无关 我会很高兴得知这是我做错的事情 其余的代码是无关紧要的 即使我
  • 如何扩展 ggplot y 轴限制以包含最大值

    通常 在图中 Y 轴值标签会在绘制的最大值下方被截断 For example library tidyverse mtcars gt ggplot aes x mpg y hp geom point 我知道scale y continous
  • 计算横截面积作为高度的函数

    我试图弄清楚如何计算不同水位的河流横截面的充满水的面积 对于横截面 我有 5 m 宽河流上每 25 cm 的深度 并且可以根据之前很好回答的问题来计算面积计算不同高度的横截面积 https stackoverflow com questio
  • if(interactive()) 是否相当于 Python 中的“if __name__ == ”__main__“: main()”?

    我希望 R 脚本有一个 main 函数 可以在交互模式下执行 但在获取文件时不应执行 main 函数 已经有一个关于这个的问题了 https stackoverflow com questions 2968220 is there an r
  • 在两个向量之间交换元素(交叉)

    假设我有 chromosome 1 lt c 0010000001010000 chromosome 2 lt c 0100000001001010 我该如何实施step 3 5 Evaluate NC1 否 中 1 个chromosome
  • ggplot2 geom_function 可以跨 arg 值进行分面吗?

    我想通过分面 geom function 创建 ggplot2 图 以便函数的参数在网格中变化 例如像这样的东西 my function lt function x par if par 1 return sin x else return
  • 闪亮的传单添加大量分离的折线

    我有一个 200k 行数据集 其中包含出发地和目的地的坐标 我有一个 R 闪亮的应用程序 带有传单地图 可以在这些坐标上显示圆圈 尽管坐标数量很大 但效果很好 这是数据的简化示例 每行包含出行id 出发地经纬度 目的地经纬度 id lat
  • 数据框中按行相关

    我正在尝试计算大型数据帧的所有行之间的相关性 到目前为止已经提出了一个有效的简单 for 循环 例如 name lt c a b c d col1 lt c 43 78 43 84 37 92 31 72 col2 lt c 43 80 4
  • R 监督潜在狄利克雷分配包

    我在用着这个LDA包 https cran r project org web packages lda 对于 R 具体来说 我正在尝试做监督潜在狄利克雷分配 slda https www cs princeton edu blei pap
  • ggplot2中的两列分组

    是否可以按两列分组 于是叉积就画出来了 经过geom point and geom smooth 例如 frame lt data frame series lt rep c a b 6 sample lt rep c glass wate
  • ‘!’ 对于 R 中的因子没有意义

    我需要从数据框中排除变量 PABI 所以 我按如下方式进行子集化 MyData4 lt subset MyData PROV PABI newdata lt MyData MyData4 但我得到了这个错误 Error in FUN lef
  • 挑战:优化取消列出[简单]

    因为 SO 最近有点慢 所以我发布了一个简单的问题 如果大鱼们能在这场比赛中留在替补席上并给新秀们一个回应的机会 我将不胜感激 有时我们的对象具有大量的大列表元素 向量 您如何将这个对象 取消列出 到单个向量中 证明你的方法比unlist
  • 如何从数据框中按降序获取前n家公司

    我正在尝试从数据框中获取排名前 n 的公司 下面是我的代码 data Forbes2000 package HSAUR sort Forbes2000 profits decreasing TRUE 现在我想从这个排序向量中获取前 50 个
  • R闪亮:基于checkboxgroupinput的子集数据

    我想根据复选框输入动态选择的列对数据进行子集 有什么方法可以使我的输入文件在我的代码中全局可用 以便可以方便地进行进一步的操作 以下是我的代码 Server R library shiny shinyServer function inpu
  • 如何修改反应链以便最后修改的对象控制其他链接的对象?

    新注释 1 最终解决的代码发布在最底部 反映了 ismirsehregal 于 2021 年 12 月 3 日的解决方案 以及一些标记为 ADDED 和 MODIFIED 的小调整 ADD 是为了解决我在矩阵 2 添加值后从矩阵 1 中删除
  • R:igraph、社区检测、edge. Betweenness 方法、统计/列出每个社区的成员?

    我有一个相对较大的图表 其中顶点 524 边 1125 是现实世界的交易 边是有向的并且具有权重 包含是可选的 我正在尝试调查图中的各个社区 并且本质上需要一种方法 计算所有可能的社区 计算最佳社区数量 返回每个 最佳 社区的成员 成员数量
  • 包什么时候需要为它自己的对象使用 :::

    考虑这个 R 包有两个函数 一个是导出函数 另一个是内部函数 hello R export hello lt function internalFunctions hello internal 你好 内部 R hello internal
  • 如何在复杂的皂膜GAM中设置更平滑的边界条件?

    我正在对南太平洋岛屿泻湖中宽吻海豚的分布进行建模 我想使用肥皂膜平滑器来模拟海豚在二维表面 经度 x 纬度 上存在的概率 考虑到陆地边界 显然海豚不能在陆地上行走 我想知道如何将我的研究区域 陆地和近海水域 的边界固定为等于零的条件 因为我
  • 使用 sprintf 打印换行符 - 有光泽

    我试图在打印时进行换行 这是我的代码 temp lt LETTERS 1 11 print sprintf Rank s s n 1 11 temp output 1 Rank 1 A n Rank 2 B n Rank 3 C n Ran

随机推荐

  • PHP 在字符串中搜索电子邮件地址

    您好 我正在尝试搜索一个字符串以查看它是否包含电子邮件地址 然后返回它 典型的电子邮件验证器表达式是 eregi a z0 9 a z0 9 a z0 9 a z0 9 a z 2 3 email 但是 如果它在字符串中 我将如何搜索 例如
  • OpenCart .twig 文件未显示更改

    我一直在尝试更改product catalog twig 文件 以删除一些不必要的按钮 例如 添加到愿望清单 和 比较产品 选项 这些按钮对于我尝试创建的商店来说毫无用处 在主题编辑器上 我已从 twig 文件中删除了两个按钮 但更改并未显
  • 通过链接打开 Android 应用程序

    我正在尝试创建一个可以通过电子邮件发送的链接 当在 Android 设备上打开我的应用程序时 如果设备上没有该应用程序 它将前往 Google 商店并搜索该应用程序 你可以这样做 在清单中创建一个过滤器来处理某些 URL 例如
  • Nodemailer 不会向 Outlook.office365 帐户发送电子邮件

    我正在尝试从 gmail 帐户发送电子邮件到接收者 即我的大学电子邮件 Outlook office365 它适用于gmail到gmail gmail到outlook live gmail到yahoo import as nodemaile
  • 从资产颤振中打开pdf文件

    我正在尝试使用 flutter fullpdfview 1 0 12 打开 PDF 文件 我的 PDF 文件位于 asset 文件夹下 但不知何故我收到错误 无法找到文件 我尝试了几个选项 但没有一个有效 并且都返回相同的错误 以下是我尝试
  • 为什么这个猪拉丁词转换代码不起作用

    Pig 拉丁语 单词转换 include
  • 如何使用 MVC RAZOR 将 DataTable 绑定到 DropDownList?

    我的模型返回数据表的集合 如下所示 如何使用 MVC RAZOR 将 DataTable 绑定到 DropDownList 对于每个数据表 我想为其创建一个表行和一个下拉列表 我尝试了下面的代码 foreach DataTable data
  • QHash存储大量数据

    我有 10 000 000 个 struct int int int int 类型的条目 当我使用它们存储时QHash http doc qt io qt 5 qhash html or QMap http doc qt io qt 5 q
  • 使用 Dojo 设置 元素的值/文本

    我正在开发一个秒表应用程序 试图学习 Dojo Toolkit 因此 首先 我需要将小时 分钟 秒和毫秒设置为 0 I tried dojo byId hours value 00 还尝试过 domAttr set hours 00 它不起
  • 使用 webpack 编译 less

    我想添加一个非常基本的 less 文件到我的project https github com pbrianmackey uiexperiment在 github 上 参见这次提交 https github com pbrianmackey
  • 如何使用expressJS提供ReactJS静态文件?

    问题 我已成功提供 React 应用程序的 index html 文件 但是index js取代
  • 从存在缺失值的现有列创建新列

    我正在尝试根据这两列创建一个新列 假设我想创建一个新列 z 当 y 不丢失时 它应该是 y 的值 当 y 确实丢失时 它应该是 x 的值 所以在这种情况下 我期望 z 是 1 8 10 8 x y 0 1 NaN 1 2 8 2 4 10
  • Sympy:化简平方根

    Sympy 似乎无法简化涉及变量平方的平方根的表达式 In 28 a x 2 In 29 b a 1 2 In 30 b Out 30 0 5 2 x In 31 b simplify Out 31 0 5 2 x 我无法将此与其他变体一起
  • 使用 PHP 7.2.4 的 Ubuntu 16.04 上缺少 PDO 驱动程序

    我想在Kubuntu 16 04上尝试最新版本的PHP 从那时起 我似乎无法将pdo与mysql一起使用 当我启动 php 时 出现以下警告 PHP Warning PHP Startup Unable to load dynamic li
  • 从 s3 读取文件时 joblib.load 出错

    当尝试从 s3 读取文件时joblib load 我收到错误ValueError embedded null byte当尝试读取文件时 这些文件是由 joblib 创建的 并且可以从本地副本 在上传到 s3 之前在本地制作 成功加载 因此错
  • 在 Backbone 中进行视图混合的正确方法

    我一直扩展基本主干视图 并且每个部分都有一个基本视图 以便我可以在多个级别上扩展 我的问题是 执行视图混合的最有效方法是什么 可以混合到任何视图中的可重用视图部分 例如 var BaseProfile Backbone View exten
  • Yahoo Pipes:根据文本文件中的单词过滤提要中的项目

    我有一个管道 可以过滤 RSS 提要并删除任何包含我选择的 停用词 的项目 目前 我已经在管道编辑器中为每个停用词手动创建了一个过滤器 但更合乎逻辑的方法是从文件中读取它们 我已经弄清楚如何从文本文件中读取停用词 但是如何将过滤器运算符应用
  • ReCaptcha 在 iPhone 上无法正常工作

    我有一个带有简单联系表格的网站 验证有点少 因为它不进入数据库 只是一封电子邮件 该表格的工作原理如下 有 5 个字段 其中 4 个为必填字段 提交将被禁用 直到 4 个字段有效 然后您才能提交 然后 所有内容都会在服务器上再次验证 包括验
  • Hibernate 完全支持 SQLite 吗?

    Jboss Hibernate 中没有提及对 SQLite 的支持its wiki https community jboss org wiki SupportedDatabases2 Stack Overflow 帖子中也提到了同样的内容
  • ggplot2刻度填充梯度与离散上限

    我正在寻找价值热图 我希望热图从表示低值的蓝色 示例代码中的 0 变为表示高值的绿色 示例代码中的 75 但是 数据包含大于 75 的值 我希望任何大于 75 的值都用红色填充 总而言之 我希望填充从 0 到 75 蓝色 到绿色 绿色 任何