管理多个(rasterVis)levelplot中的子图标题

niwlg2el  于 2023-04-27  发布在  其他
关注(0)|答案(1)|浏览(73)

我想将多个levelplots合并为一个(使用rasterVis包)。我成功地使用c()(参见reprex)。但是,我找不到一种方法来管理子图的标题。具体来说,只有顶部行的图得到正确的标题,而其余的得到一个非常“丑陋”的NA作为子图标题。

# Load libraries
library(rasterVis)
library(terra)

# Create raster extents
bbox_italy <- c(6.284180,19.028320,36.385913,47.398349) # Bounding box Italy
bbox_greece <- c(19.006348,29.245605,34.107256,42.098222) # Bounding box greece 

# Create raster data
# Greece spring
r1 <- rast(ncol=10, nrow=10, ext(bbox_greece))  
r1 <- setValues(r1, 1:ncell(r1))
names(r1) <- 'spring'
# Greece summer
r2 <- rast(ncol=10, nrow=10, ext(bbox_greece)) 
r2 <- setValues(r2, 1:ncell(r2))
names(r2) <- 'summer'

# Italy spring
r3 <- rast(ncol=10, nrow=10, ext(bbox_italy))  
r3 <- setValues(r3, 1:ncell(r3))
names(r3) <- 'spring'
#italy summer
r4 <- rast(ncol=10, nrow=10, ext(bbox_italy)) 
r4 <- setValues(r4, 1:ncell(r4))
names(r4) <- 'summer'

# create levelplots 
plot1 <- levelplot(c(r1, r2))
plot2 <- levelplot(c(r3,r4))

# combine level plots
comb_plot <- c(plot1, plot2, layout = c(2, 2), merge.legends = F)
print(comb_plot)

在我的例子中,多水平图的每一列都包含具有相同标题的子图(一年中的季节,针对不同的国家)。因此,我可以选择以下两种:1)从第2行向下的子图的“空白”标题,或2)每列中每个子图的相同标题
我问,因为我将自动化这个过程约400情节,因此这将是非常好的有正确的标题/副标题直接从脚本。
我所期望的是每个子图在每一列都有相同的标题(因为每个levelplots中的名称都是正确的)。

plot2 <- levelplot(c(r3,r4), names.attr=rep("",2))

当我打印单个levelplot的时候

print(plot2)

然而,当我使用c()将其组合在一起时,我得到了相同的结果('NA'作为子情节标题)。任何帮助都是高度赞赏的。

i2loujxw

i2loujxw1#

这并不是您正在寻找的解决方案:

plot1 <- levelplot(c(r1, r2))
plot2 <- levelplot(c(r3,r4))

print(plot1, split = c(1,1, 1, 2), more = TRUE)
print(plot2, split = c(1,2, 1, 2))

我喜欢它,因为它突出了光栅的不同范围。

相关问题