修复 rasterVis::vectorplot 中的文本位置

Fix text position in rasterVis::vectorplot

我正在尝试修复 rasterVis::vectorplot 中某些文本的位置,以便即使我更改了 png 文件的宽度和高度,它也保持在相同的位置。

我尝试使用 par 的保证金参数,但没有成功。

这是我目前得到的示例:

#Some raster data
proj <- CRS('+proj=longlat +datum=WGS84')
df <- expand.grid(x = seq(-2, 2, .01), y = seq(-2, 2, .01))
    
df$z <- with(df, (3*x^2 + y)*exp(-x^2-y^2))
r <- rasterFromXYZ(df, crs=proj)
        
#[A]
png("test01.png",width = 918,height = 850,res=100)
vectorplot(r,par.settings=list(layout.widths = list(axis.key.padding = 3)),
           narrows = 500,length=0.1,lwd.arrows=0.4)
grid.text(substr(R.version.string, 1, 15),rot=90, x=0.92,y=0.14,gp = gpar(fontsize = 12, fontface = "italic"))
dev.off()

这是[A]的输出。这就是我想要的:

现在,更改宽度和高度:

##[B]
png("test02.png",width = 1718,height = 850,res=100)
vectorplot(r, 
           par.settings=list(layout.widths = list(axis.key.padding = 3)),
           narrows = 500,length=0.1,lwd.arrows=0.4)
grid.text(substr(R.version.string, 1, 15),rot=90, x=0.92,y=0.14,gp = gpar(fontsize = 12, fontface = "italic"))
dev.off()

这是[B]的输出:

如您所见,文本不会停留在同一个位置。 (我是 rasterVis 库的新手。)

latticeExtra 包中的 layer functionpanel.text 会在这里帮助你。 panel.text 函数在面板区域内打印,因此您必须将选项 clip = list(panel = FALSE) 添加到设置列表中才能在该区域外打印:

library(grid)
library(rasterVis)

vectorplot(r,par.settings=list(clip = list(panel = FALSE),
                               layout.widths = list(axis.key.padding = 3)),
           narrows = 500,length=0.1,lwd.arrows=0.4) +
    layer(panel.text(2.05, -2,
                     substr(R.version.string, 1, 15),
                     adj = c(0, 1),
                     srt = 90))