控制 R 中栅格值的图例和颜色?

2023-11-28

我正在尝试将 ESRI 网格绘制为表面的光栅图像。我已经弄清楚如何制作绘图,但不知道如何控制 R 的色标。

# open necessary libraries
library("raster")
library("rgdal")
library("ncdf")

# goal: select an ESRI Grid ASCII file and plot it as an image.
infile <- file.choose("Results")
r <- raster(infile)

# read in metadata from ESRI output file, split up into relevant variables
info <- read.table(infile, nrows=6) 
NCOLS <- info[1,2]
NROWS <- info[2,2]
XLLCORNER <- info[3,2]
YLLCORNER <- info[4,2]
CELLSIZE <- info[5,2]
NODATA_VALUE <- info[6,2]
XURCORNER <- XLLCORNER+(NCOLS-1)*CELLSIZE
YURCORNER <- YLLCORNER+(NROWS-1)*CELLSIZE

# plot output data - whole model domain
pal <- colorRampPalette(c("purple","blue","cyan","green","yellow","red"))
par(mar = c(5,5,2,4))  # margins for each plot, with room for colorbars
par(pin=c(5,5))  # set size of plots (inches)
par(xaxs="i", yaxs="i")  # set up axes to fit data plotted
plot(r, xlim=c(XLLCORNER, XURCORNER), ylim=c(YLLCORNER, YURCORNER), ylab='UTM Zone 16 N Northing [m]', xlab='UTM Zone 16 N Easting [m]', col = pal(50))

“infile”的一个例子是这样的:

NCOLS        262  
NROWS        257  
XLLCORNER     304055.000  
YLLCORNER    4792625.000  
CELLSIZE         10.000  
NODATA_VALUE    -9999.000  
42.4 42.6 42.2 0 42.2 42.8 40.5 40.5 42.5 42.5 42.5 42.9 43.0 ...  
42.5 42.5 42.5 0 0 43.3 42.7 43.0 40.5 42.5 42.5 42.4 41.9 ...  
42.2 42.7 41.9 42.9 0 0 43.7 44.0 42.4 42.5 42.5 43.3 43.2 ...  
42.5 42.5 42.5 42.5 0 0 41.9 40.5 42.4 42.5 42.4 42.4 40.5 ...  
41.9 42.9 40.5 43.3 40.5 0 41.9 42.8 42.4 42.4 42.5 42.5 42.5 ...  
...  

问题是数据中的 0 值拉伸了颜色轴,超出了对我有用的范围。见下文:

enter image description here

基本上,我想告诉 R 将颜色轴从 25 拉伸到 45,而不是 0 到 50。我知道在 Matlab 中我会使用命令caxis。 R有类似的东西吗?


我使用数据集“volcano”来生成栅格对象,并使代码可重现。

Ope选项是将栅格值离散化为类,然后,您可以控制每个类中值的范围。下面两个例子:

1- plot.

library(raster)
library(RColorBrewer)

r = raster(volcano) #raster object

cuts=c(100,150,160,170,180,190,200) #set breaks
pal <- colorRampPalette(c("white","black"))

plot(r, breaks=cuts, col = pal(7)) #plot with defined breaks

enter image description here

2- ggplot2

library(ggplot2)
library(raster)
library(RColorBrewer)

r = raster(volcano) #raster object
#preparing raster object to plot with geom_tile in ggplot2
r_points = rasterToPoints(r)
r_df = data.frame(r_points)
head(r_df) #breaks will be set to column "layer"
r_df$cuts=cut(r_df$layer,breaks=c(100,150,160,170,180,190,200)) #set breaks

ggplot(data=r_df) + 
  geom_tile(aes(x=x,y=y,fill=cuts)) + 
  scale_fill_brewer("Legend_title",type = "seq", palette = "Greys") +
  coord_equal() +
  theme_bw() +
  theme(panel.grid.major = element_blank()) +
  xlab("Longitude") + ylab("Latitude")

enter image description here

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

控制 R 中栅格值的图例和颜色? 的相关文章

随机推荐

  • 禁止链接标题

    有什么方法可以抑制链接上的弹出标题 但仍将它们保留在页面上以供视障人士使用吗 这是浏览器解释链接标题并显示工具提示 弹出窗口的功能 没有办法压制他们 我尝试过 因为客户也不喜欢它们 并且没有办法绕过它们
  • 用于在客户端读取 doc 和 docx 的 JavaScript 库

    我正在寻找一个 JavaScript 库 它可以读取 doc and docx 文件 重点仅在于文本内容 我对 MS Word 文件中的图片 公式或其他特殊结构不感兴趣 如果该库能够与 JavaScript FileReader 一起使用
  • T* 与 char* 指针算术

    假设我们有一个包含 N 个 T 类型元素的数组 T a N 根据C 14标准 在什么条件下我们可以保证 char void a 0 n sizeof T char void a n 0 lt n
  • “react-native run-android” - 构建成功,但出现错误类型 3 错误:活动类 MainActivity 不存在

    我尝试在 Android 模拟器上运行应用程序 但失败了 我跑react native run android BUILD是成功的 但我收到错误类型 3 并且我没有看到它安装在模拟器上 当我在cmd中运行 react native run
  • 使用请求登录 WordPress - Python3

    import requests with requests Session as s headers1 Cookie wordpress test cookie WP Cookie check datas log admin pwd adm
  • 三个js对象的单位是什么?

    var camera new THREE PerspectiveCamera 35 Field of view 800 640 Aspect ratio 1 Near 10000 Far var cube new THREE Mesh ne
  • 如何使用 C# 查询 NTP 服务器?

    我需要的只是一种使用 C 查询 NTP 服务器的方法 以获取返回的 NTP 服务器的日期时间string或作为DateTime 这怎么可能以最简单的形式实现呢 由于旧的接受答案已被删除 这是一个不再存在的 Google 代码搜索结果的链接
  • SQLite 提交期间数据库文件被莫名锁定

    我正在对 SQLite 数据库执行大量插入 我只使用一根线程 我批量写入以提高性能 并在发生崩溃时具有一定的安全性 基本上 我在内存中缓存了一堆数据 然后当我认为合适时 我循环遍历所有这些数据并执行插入 其代码如下所示 public voi
  • 64 位 Windows 上的 P/Invoke 是否需要与 32 位 Windows 上不同的签名?

    当我创建一个引用的签名时user32 dll例如我应该用user64 dll如果目标是 64 位计算机 DllImport user32 dll CharSet CharSet Auto public static extern bool
  • Microsoft 图表控件和 X 轴时间刻度格式

    我的 winforms 应用程序中有一个 Microsoft 图表控件 我目前在循环中播放 X 和 y 值 我还将 X 轴格式设置为 ChartAreas 0 AxisX LabelStyle Format 00 00 00 这作为时间格式
  • 如果我忘记关闭扫描集会怎样?

    假设我忘记关闭右方括号 的扫描集 那会发生什么 它会调用未定义的行为吗 Example char str Hello One Two Three char s1 50 0 s2 50 0 sscanf str s h s1 s2 UB pr
  • List.view 和 LazyList 有什么区别?

    我是 Scala 新手 我刚刚了解到LazyList被创建来取代Stream 同时他们添加了 view所有集合的方法 所以 我想知道为什么LazyList添加到 Scala 集合库 当我们可以做的时候List view 我刚刚看了 Scal
  • 如何在Conv2D层中使用keras指定填充?

    我正在尝试实施AlexNet使用 Keras 并检查 MATLAB 中的网络设计 如下所示 可以看出 第二个卷积层有 256 个大小为 5x5 的滤波器 48 个通道和 2 2 2 2 的填充 我怎样才能指定padding与 Keras 的
  • PHP 构造函数内的全局变量

    这应该是显而易见的 但我对 PHP 变量范围有点困惑 我在构造函数中有一个变量 我想稍后在同一个类的函数中使用它 我目前的方法是这样的 有没有比滥用环境变量更好的方法来做到这一点 谢谢 您可以使用类变量 它具有 类的上下文 当然 以 PHP
  • “HTTP 状态 401 - 身份验证失败:传入 SAML 消息无效”,Salesforce 作为实施 SSO 的 IdP

    我已经使用 Spring SAML 实现了 SSO 一切正常 到目前为止 它已与以下 IDP 合作 1 idp ssocircle com 2 openidp feide no 现在我正在使用 salesforce com 作为我的身份提供
  • 如何在 Prometheus/Grafana 中按系列名称对图例进行排序

    我有一个 Grafana 仪表板面板 配置为呈现 Prometheus 查询的结果 查询返回大量系列 右侧显示图例 如果用户正在寻找特定的系列 他们可能必须滚动浏览所有系列 并且很容易错过他们正在寻找的系列 所以我想按系列名称对图例进行排序
  • 长按按钮事件处理程序

    我看过好几篇这样的文章one描述如何使用按钮处理长按事件 我可以按照这些指示进行操作 但我想知道是否可以像处理点击一样进行操作 我处理点击的方式是在 XML 中定义处理程序 如下所示
  • 子类中Java静态块的执行

    我正在准备 Java 认证测试 我发现了一个与 Java 静态块执行相关的有趣问题 我花了很多时间阅读这个主题 但没有找到我正在寻找的答案 我知道静态块是在类加载到 JVM 中或调用 main 方法时执行的 但是 package oneCl
  • 重新复用为 MKV 但使用 FFmpeg 添加所有流

    我正在尝试自动化 FFmpeg 将给定目录中的所有视频文件重新混合为 MKV 我目前正在使用 ffmpeg i INPUT c copy OUTPUT mkv 但是 某些流会以这种方式被跳过 例如 如果有 2 个音频流 则只有 1 个进入输
  • 控制 R 中栅格值的图例和颜色?

    我正在尝试将 ESRI 网格绘制为表面的光栅图像 我已经弄清楚如何制作绘图 但不知道如何控制 R 的色标 open necessary libraries library raster library rgdal library ncdf