gpt4 book ai didi

r - 使用 RandomFields 包绘制随机高斯场的实现会产生空白图。为什么?

转载 作者:行者123 更新时间:2023-12-02 04:48:29 24 4
gpt4 key购买 nike

出于某种原因,当我尝试使用 plot() 函数来可视化 RFsimulate() 函数的输出时 < strong>RandomFields 包,输出始终是空图。

我只是使用帮助文件中包含的示例代码:

## first let us look at the list of implemented models
RFgetModelNames(type="positive definite", domain="single variable",
iso="isotropic")

## our choice is the exponential model;
## the model includes nugget effect and the mean:
model <- RMexp(var=5, scale=10) + # with variance 4 and scale 10
RMnugget(var=1) + # nugget
RMtrend(mean=0.5) # and mean

## define the locations:
from <- 0
to <- 20
x.seq <- seq(from, to, length=200)
y.seq <- seq(from, to, length=200)

simu <- RFsimulate(model=model, x=x.seq, y=y.seq)
str(simu)

这给出:

Formal class 'RFspatialGridDataFrame' [package ""] with 5 slots
..@ .RFparams :List of 5
.. ..$ n : num 1
.. ..$ vdim : int 1
.. ..$ T : num(0)
.. ..$ coordunits: NULL
.. ..$ varunits : NULL
..@ data :'data.frame': 441 obs. of 1 variable:
.. ..$ variable1: num [1:441] 4.511 2.653 3.951 0.771 2.718 ...
..@ grid :Formal class 'GridTopology' [package "sp"] with 3 slots
.. .. ..@ cellcentre.offset: Named num [1:2] 0 0
.. .. .. ..- attr(*, "names")= chr [1:2] "coords.x1" "coords.x2"
.. .. ..@ cellsize : Named num [1:2] 1 1
.. .. .. ..- attr(*, "names")= chr [1:2] "coords.x1" "coords.x2"
.. .. ..@ cells.dim : int [1:2] 21 21
..@ bbox : num [1:2, 1:2] -0.5 -0.5 20.5 20.5
.. ..- attr(*, "dimnames")=List of 2
.. .. ..$ : chr [1:2] "coords.x1" "coords.x2"
.. .. ..$ : chr [1:2] "min" "max"
..@ proj4string:Formal class 'CRS' [package "sp"] with 1 slot
.. .. ..@ projargs: chr NA

...所以数据已经被模拟,但是当我调用时

plot(simu)

我最终得到了这样的结果: enter image description here e.g. Empty plot

谁能告诉我这里发生了什么吗?!

最佳答案

我会将对象强制返回到 sp SpatialGridDataFrame 并绘制它,因为 RandomFields 围绕这个 S4 类创建一个包装器:

sgdf = sp::SpatialGridDataFrame(simu@grid, simu@data, simu@proj4string)
sp::plot(sgdf)

此外,您可以使用标准图形库强制转换为矩阵和绘图:

graphics::image(as.matrix(simu))

奇怪的是,将其转换为 SpatialGridDataFrame 需要在绘图之前进行翻转和转置:

graphics::image(t(apply(as.matrix(sgdf), 1, rev)))

显然,它们内部有些不一致。最简单的解决方案是将 simu 转换为 rasterplot:

r = raster::raster(simu)
raster::plot(r)

关于r - 使用 RandomFields 包绘制随机高斯场的实现会产生空白图。为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43094652/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com