在R中创建栅格直方图

Posted

技术标签:

【中文标题】在R中创建栅格直方图【英文标题】:Create histogram of raster in R 【发布时间】:2016-05-25 19:46:24 【问题描述】:

我想使用以下方法创建光栅图像的值分布图,例如直方图或图形:

library(raster)
library(sp)
library(rgdal)
DEM <- raster("NR.tif")
hist(DEM)
plot(DEM)

plot() 用于验证我的数据并向我显示全绿色图像。据说是 3 中的第 1 带。 但是我看不到其他乐队? 显然,直方图中的分布并不代表图像文件中的插值。 在 ARCgis 中创建的直方图是 herehist,我相信它代表了真实值。

关于如何创建真实值的直方图的任何建议,例如image。

最好, 马蒂亚斯

【问题讨论】:

我不确定我是否理解你想要得到的:levelplot rasterVis (oscarperpinan.github.io/rastervis) 有什么帮助吗? 不确定,如果我理解正确但是:试试hist(DEM)plot(density(DEM)) 我希望编辑澄清了问题。 【参考方案1】:

你可以试试

download.file("https://www.dropbox.com/s/t279m5ojners7fl/NR.tif?dl=1", 
              tf <- tempfile(fileext = ".tif"), mode="wb")
library(raster)
library(tiff)
library(ggplot2)
library(reshape2)
DEM <- readTIFF(tf)
plot(as.raster(DEM))

ggplot(melt(DEM), 
       aes(value, fill=as.factor(Var3))) + 
  geom_histogram(position="dodge") 


或者,关于您的更新

r <- as.raster(DEM)
tab <- as.data.frame(sort(table(r)))
ggplot(subset(tab, !r %in% c("#F0F0F0", "#000000")), 
              aes(x=r, y=Freq, fill=I(r))) + 
         geom_bar(stat="identity") + 
  theme(axis.text.x = element_text(angle=90))

【讨论】:

谢谢,这绝对是一个进步。但是直方图计算了灰色背景,因此不代表计算值。 (在垂直水柱中是硝酸盐梯度。)使用 ARCmap 创建的直方图具有显着不同的分布 (dropbox.com/s/fcazm1pd84r8tf9/…)。 是的,这是一个经典的 RGB 直方图,您可以在每个图像处理工具中找到它。恕我直言,这个问题没有要求进行地理空间分析。但是你应该能够从那里得到你想要的地方(例如,你可以排除一种灰色的背景颜色。) 谢谢。我想具体一点,我想我得更加努力。感谢您的出色回答。【参考方案2】:

尝试将 NAvalue 设置为背景颜色,然后调用 hist() 函数或使用来自 lukeA 的 ggplot 命令:

library(raster)
ras <- stack("Downloads/NR.tif")
NAvalue(ras) <- 240
hist(ras)

这会产生以下图表:

【讨论】:

另见:plotRGB(ras)

以上是关于在R中创建栅格直方图的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Shiny 中创建可点击的直方图?

在 Spark 中创建分箱直方图

在 ggplot2 中创建密度直方图?

在 Oracle 中创建直方图/频率分布的最佳方法?

使用gnuplot的直方图?

使用自定义渐变填充直方图箱