簡體   English   中英

在levelplot中使用布局功能

[英]Use layout function within levelplot

我在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)工作時失敗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)))

在此處輸入圖片說明

如果您不想對傳遞給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))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM