gpt4 book ai didi

r - 在 levelplot 中使用布局函数

转载 作者:行者123 更新时间:2023-12-05 01:20:44 25 4
gpt4 key购买 nike

我在 R 中做映射,在 rasterVis 包中发现了非常有用的 levelplot 函数。我想在一个窗口中显示多个图。但是,par(mfcol) 不适合 lattice。我发现 layout 函数在我的案例中非常有用,但它无法执行我想做的事情。

这是我的代码:

s <- stack(Precip_DJF1, Precip_DJF2, Precip_DJF3, Precip_DJF4, 
Precip_DJF5, Precip_DJF6)

levelplot(s, layout(matrix(c(1, 2, 0, 3, 4, 5), 2, 3)),
at=seq(floor(3.81393), ceiling(23.06363), length.out=20),
par.settings=themes, par.strip.text=list(cex=0),
scales=list(alternating=FALSE))

使用

 layout(matrix(c(1, 2, 0, 3, 4, 5), 2, 3))

layout(3, 2) 工作时失败,但绘图按行显示而不是按列显示。我希望图表显示在第 1 列,然后是第 2 列等。类似于:

mat <- matrix(c(1, 2, 3, 4, 5, 6), 2, 3)

> mat
# [,1] [,2] [,3]
# [1,] 1 3 5
# [2,] 2 4 6

levelplotlattice 中是否有函数可以进行这种布局?

提前致谢。

最佳答案

正如@Pascal 所建议的,您可以使用 index.cond 来执行此操作:

例如:

library(rasterVis)
s <- stack(replicate(6, raster(matrix(runif(100), 10))))
levelplot(s, layout=c(3, 2), index.cond=list(c(1, 3, 5, 2, 4, 6)))

enter image description here

如果您不想对传递给 index.cond 的列表进行硬编码,您可以使用如下内容:

index.cond=list(c(matrix(1:nlayers(s), ncol=2, byrow=TRUE)))

2 表示布局中的行数。


当然,您也可以传递一个 stack,其中的图层按所需的行式绘图顺序排列,例如:

levelplot(s[[c(matrix(1:nlayers(s), ncol=2, byrow=TRUE))]], layout=c(3, 2))

关于r - 在 levelplot 中使用布局函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28621120/

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