绘制色带在零附近发散的栅格

2023-11-23

我正在尝试绘制具有正值和负值的地图。

All positive values should have red color while negative should have blue color and zero should have white just like in this sample plot with discrete colorsenter image description here

下面是我正在使用的代码:

library (rasterVis)
ras1 <- raster(nrow=10,ncol=10) 
set.seed(1) 
ras1[] <- rchisq(df=10,n=10*10) 
ras2=ras1*(-1)/2 
s <- stack(ras1,ras2) 
levelplot(s,par.settings=RdBuTheme())

非常感谢您提供了一个通用的解决方案,该解决方案也可以应用于其他绘图练习。


I wrote a gist去做这个。这需要一个trellis生成的对象rasterVis::levelplot和色带,并绘制颜色在零附近发散的对象。

使用您的s,你可以这样使用它:

devtools::source_gist('306e4b7e69c87b1826db')
p <- levelplot(s)
diverge0(p, ramp='RdBu')

ramp应该是一个名字RColorBrewer调色板,要插值的颜色向量,或colorRampPalette.

enter image description here


这是来源:

diverge0 <- function(p, ramp) {
  # p: a trellis object resulting from rasterVis::levelplot
  # ramp: the name of an RColorBrewer palette (as character), a character 
  #       vector of colour names to interpolate, or a colorRampPalette.
  require(RColorBrewer)
  require(rasterVis)
  if(length(ramp)==1 && is.character(ramp) && ramp %in% 
     row.names(brewer.pal.info)) {
    ramp <- suppressWarnings(colorRampPalette(brewer.pal(11, ramp)))
  } else if(length(ramp) > 1 && is.character(ramp) && all(ramp %in% colors())) {
    ramp <- colorRampPalette(ramp)
  } else if(!is.function(ramp)) 
    stop('ramp should be either the name of a RColorBrewer palette, ', 
         'a vector of colours to be interpolated, or a colorRampPalette.')
  rng <- range(p$legend[[1]]$args$key$at)
  s <- seq(-max(abs(rng)), max(abs(rng)), len=1001)
  i <- findInterval(rng[which.min(abs(rng))], s)
  zlim <- switch(which.min(abs(rng)), `1`=i:(1000+1), `2`=1:(i+1))
  p$legend[[1]]$args$key$at <- s[zlim]
  p$par.settings$regions$col <- ramp(1000)[zlim[-length(zlim)]]
  p
}

请注意,正如 @LucasFortini 中所建议的post,如果您愿意让色键在零上方和下方延伸相同的距离,则过程会简单得多,例如:levelplot(s,par.settings=RdBuTheme(), at=seq(-max(abs(cellStats(s, range))), max(abs(cellStats(s, range))), len=100)).

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

绘制色带在零附近发散的栅格 的相关文章

  • data.table `:=` 具有动态输入(现有列)和输出(新列名称)的赋值表达式

    Note 我在这个问题中遇到的确切问题不适用于最新版本的数据表 如果您想做标题中描述的事情 请查看软件包常见问题解答中的相应问题 1 6 好的 但我事先不知道表达方式 我如何以编程方式传递它们 https rawgit com wiki R
  • 有没有比“[”更快的方法来对稀疏矩阵进行子集化?

    我是 seqMeta 包的维护者 正在寻找如何加速将大矩阵多次分割成小块的瓶颈的想法 背景 seqMeta 包用于分析遗传数据 所以你有一组受试者 n subject 和一些遗传标记 n snps 这导致 n subject x n snp
  • PowerBI:如何保存R脚本的结果?

    是否可以在 Power BI Desktop 中实现以下场景 将数据从 Excel 文件加载到多个表 使用 R 脚本从多个数据源进行计算 将计算结果存储到 Power BI pbix 中的新表 这个想法是使用 Power BI Deskto
  • str_count 具有重叠子字符串

    我正在尝试计算字符向量中子字符串的出现次数 例如 lookin lt c babababa bellow ra baba searchfor lt aba str count lookin searchfor 返回 2 0 1 但是 我希望
  • 如何在 R 中使用 Torocks5 getURL

    我想使用 TorgetURLR Tor 中的功能正在工作 在 Firefox 中检查 socks5 at port 9050 但是当我在 R 中设置它时 出现以下错误 html lt getURL http www google com f
  • R CMD 检查注意:导入字段中的命名空间未导入

    我继续得到以下 R CMD 检查 通过devtools check 对于我准备提交给 CRAN 的包 您可以查看该包的结果here https cran rstudio com web checks check results clustR
  • 如何更改现已弃用的 dplyr::funs() (其中包含 ifelse 参数)?

    非常基本 但我认为我并没有真正理解这一变化 library dplyr library lubridate Lab import sql lt Lab import gt select if sum is na gt 0 gt mutate
  • 如何更改 geom_bar 中条形之间的间距?

    我有一个两边都有正值的条形图 当我改变条形的宽度时 它们之间的空间变得很大并且看起来不太好 我试图用它来操纵它position position dodge 但它不起作用 如何减少栏之间的空间 这是代码 最初发布在这里与 x 轴交叉的堆积条
  • 如何根据时间戳列制作时间跨度列?

    我有一个数据表 其中第 1 列中包含时间戳 第 2 列中包含事件 时间戳的格式为Y m d H M OS3 e g 2019 09 26 07 29 22 778 我想添加一个新列 其中包含时间戳 2 到时间戳 1 之间的差异的时间跨度值
  • 如何有效地将多个 rgl 图连接成一个图?

    我用以下命令制作了 3D 绘图rgl打包我的数据的每个因子级别并将它们保存为 png 我的数据有 30 个不同的级别 从而产生了 30 个不同的图像文件 现在我想将这些 png 合并成一个图 我会这样显示它们 下面的例子说明了我想做的事情
  • ggplot2 密度直方图,宽度=.5,vline 和居中条形位置

    我想要一些离散数据的良好密度 总和为 1 直方图 我尝试了几种方法来做到这一点 但没有一种方法完全令人满意 生成一些数据 data set seed 999 d test data frame score round rnorm 100 1
  • 更改 ggplot 对象的数据集

    我正在绘制数据的子集ggplot2我想知道我是否会以某种方式使用已包含在ggplot原始数据子集中的对象 举个例子 这是第一个图 代码块 1 require ggplot2 p lt ggplot mtcars aes mpg wt col
  • Shiny:如何在数据表中显示条形图

    我想在数据表中显示条形图 这link http jsfiddle net annoyingmouse em27yod1 显示我想使用 javascript 做什么 我不了解 javascript 或 html 所以你能告诉我是否可以使用闪亮
  • 如何在 Windows 上使用 freeType 构建 rgl

    我正在尝试 并且非常失败 建立rgl封装有freeType在 Windows 上 因为事实证明 rgl我通过 Rgui 安装的 Windows 二进制文件不包括freeType支持 我需要它的原因是this https stackoverf
  • 根据“df1”的一个变量(“df1$var1”)在“df1”中创建一个变量,并根据“df1$var1”创建一个可更改的“df2”变量

    我有数据框df1总结了一段时间内鱼的深度 df1 Site告诉你鱼所在的地点 df1 Ind告诉你个人和df1 Depth告诉您鱼在特定位置的深度df1 Datetime 另一方面 我有df2总结了一段时间内 每三小时 从表面到 39 米深
  • 为什么连接终止

    我正在尝试使用随机森林分类模型H2OR 内部的库 训练集有 7000 万行和 25 个数字特征 总文件大小为 5 6 GB 验证文件的大小为 1 GB 我的系统有 16 GB RAM 和 8 核 CPU 系统成功读取 H2O 对象中的两个文
  • 如何制作 POSIXct 的空向量

    我想制作一个空向量POSIXct这样我就可以放一个POSIXct in it vec lt vector POSIXct 10 vec vec 1 lt 2014 10 27 18 11 36 PDT vec 那是行不通的 有任何想法吗 由
  • 按字符分隔字段中的变量

    我最近问了这个问题单独的字段内容 https stackoverflow com questions 53309849 separate contents of field并得到了一个非常快速且非常简单的答案 我在 Excel 中可以简单地
  • 连接极线ggplot图中的间隙

    当 ggplot 使用极坐标绘制线图时 它会在最高和最低 x 值之间留下间隙 Dec and Jan如下 而不是缠绕成螺旋状 我怎样才能继续这条线并缩小差距 特别是 我想使用月份作为 x 轴 但在一条循环线上绘制多年的数据 Reprex l
  • R 脚本 - 如何在错误时继续执行代码

    我编写了一个 R 脚本 其中包含一个检索外部 Web 数据的循环 数据的格式大多数时候是相同的 但有时格式会以不可预测的方式发生变化 并且我的循环崩溃 停止运行 有没有办法不管错误如何继续执行代码 我正在寻找类似于 VBA 中的 On er

随机推荐

  • 如何确定 MS SQL Server 2005 中表值变量的内部名称

    可以使用以下命令确定临时表的名称 例如 t1 select TableName Name from tempdb sys tables where Object ID object id tempDB dbo t1 如何找到表值变量的名称
  • 去除大量数字(big.Int)

    我正在尝试将两个大数相除 例如 尝试将 50 除以 18 并且我设置了两个 big Int 变量 first MulRange 1 50 second MulRange 1 18 如何划分数字 最好是整数除法 Thanks 我怎样才能划分数
  • 如何在 Objective-C 中的两个类之间进行引用?

    我正在开发一个 iPhone 应用程序 我对 Objective C 以及 class h 和 class m 结构有点陌生 现在 我有两个类 它们都需要具有另一个类型的变量 但这似乎是不可能的 如果在class1 m 或class2 m
  • 列出 javascript 中所有内置函数?

    js 有没有办法列出所有内置函数及其参数列表上的一些信息 我真的找不到任何关于反射来做这类事情的东西 编辑 Math sin之类的函数其实就是我要列出的 实际上都是内置函数 也许是这样的 for var x in window if win
  • 确定文件是否正在 Windows 上的 Perl 中使用

    我正在编写一些 Perl 它获取 Windows Media Center 上录制的电视节目 并根据某些条件移动 重命名 删除它们 由于 Perl 运行相当频繁 我想清楚地确定该文件是否正在使用 换句话说 节目正在录制过程中 这样我就可以避
  • Python 3:UnboundLocalError:赋值之前引用的局部变量[重复]

    这个问题在这里已经有答案了 下面的代码给出了错误UnboundLocalError local variable Var1 referenced before assignment Var1 1 Var2 0 def function if
  • 如何使用 Perl 从文本文件中提取 IP 地址?

    如何从每行都有 IP 地址的文本文件中提取 IP 地址 我想提取 IP 然后在单独的文件中列出 IP 地址 包含 IP 的文本文件采用以下格式 主机 somehost com 192 168 1 1 已启动 0 20 秒延迟 主机 10 1
  • Java 8 默认方法作为特征:安全吗?

    使用安全做法吗默认方法是穷人版本的特质在 Java 8 中 有人声称这可能会让熊猫感到悲伤如果你只是为了使用它们 因为它很酷 但这不是我的意图 人们还经常提醒 引入默认方法是为了支持 API 演化和向后兼容性 这是事实 但这并不意味着将它们
  • 如何访问深度嵌套的 json 键和值

    我正在用 Go 编写一个 websocket 客户端 我从服务器收到以下 JSON args time 2013 05 21 16 57 17 name send time 我正在尝试访问time参数 但就是无法掌握如何深入到接口类型 pa
  • 如何在ubuntu上彻底清除并重新安装postgresql? [关闭]

    Closed 这个问题不符合堆栈溢出指南 目前不接受答案 这个问题似乎不是关于主要由程序员使用的特定编程问题 软件算法或软件工具 如果您认为该问题与主题相关另一个 Stack Exchange 站点 您可以发表评论来解释问题可以在哪里得到解
  • Z 顺序曲线坐标

    我如何访问使用 Z 顺序以 O 1 时间复杂度存储在数组中的数据 我需要通过坐标快速访问每个元素 有没有比使用 while 移位位更快的方法来访问这些数据 一种方法是使用查找表 我有静态数据大小 EDIT 我现在的一个想法是使用 y SIZ
  • 如何从过滤器中自动选择范围而无需手动输入?

    我想知道是否有一种方法可以根据所选过滤器自动选择单元格范围 Example 在 H 列 中设置过滤器 自动选择从 A 列 A2000 开始的结果单元格数据 C 列 C5000 等 这就是我陷入困境的地方 我不知道如何编写以根据所选过滤器自动
  • MySQL 查询被杀死后不会消失

    我有一个 MySQL 查询 它将数据从一个表复制到另一个表进行处理 由于某种原因 这个通常需要几秒钟的查询被锁定了一夜并运行了几个小时 今天早上登录时 我试图终止该查询 但它仍然列在进程列表中 Id User Host db Command
  • 为什么 Assembly.GetTypes() 需要引用?

    我想从程序集中获取所有类型 但我没有引用 也不关心它们 查找接口类型与引用有什么关系 我有办法解决这个问题吗 Assembly assembly Assembly LoadFrom myAssemblyPath Type typeArray
  • MPAndroidChart:如何自定义条形值标签

    我在我的 Android 应用程序中使用 MPAndroidChart 我用一个BarChart由 组成的BarEntry 我还启用了 y 值显示在栏顶部的功能 我的问题是我希望条形顶部的值是整数 例如5 但目前这些值显示为5 00 那么我
  • iOS 键盘语言更改时是否有委托调用?

    我有一个场景 我希望有一个处理程序 当用户按下 iOS 键盘上的语言更改 地球图标 时 该处理程序会被触发 我怎样才能实现这一目标 Thanks 以下应该有效 您必须在代码中使用 UIKeyboard 通知 NSNotificationCe
  • 如何使用 thymeleaf 在 javascript 中使用 for 循环?

    我正在使用 thymeleaf 所以当我运行这个应用程序时 它给了我一个错误 for int i 0 i h1 R h1
  • 使用打包在 .jar 中的 Thymeleaf 使用 Spring Boot 解析模板时出错

    我有一个使用 Thymeleaf 作为模板解析器的 Spring Boot 应用程序 在从 NetBeans 进行调试时工作正常 但在运行其 jar 时出现此错误 解析模板 theme property 时出错 模板可能不存在或无法被任何配
  • 当选定的 ng-option 更改时获取值

    我的 html 页面中有一个下拉列表 落下
  • 绘制色带在零附近发散的栅格

    我正在尝试绘制具有正值和负值的地图 All positive values should have red color while negative should have blue color and zero should have w