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

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(使用前将#替换为@)

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

随机推荐

  • 如何确定 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