我是 R 中使用
terra
包的新手。我正在尝试使用包的绘图函数来绘制 SpatRaster
。但是,我想更改多个布局特性,但在网上没有找到所需的信息。
例如:
# Example data
library(terra)
f <- system.file("ex/elev.tif", package="terra")
r <- rast(f)
## Define colours
colfunc <- colorRampPalette(c("#08306b", "#f7fbff"))
# list with details for legend
plg = list(
title = expression(bold("Depth [m]")),
title.cex = 0.9,
cex = 0.7,
shrink=0
)
# list with details for axes
pax = list(
sides = c(1,2,3,4),
labels = T
)
plot(r, mar=c(3.1, 3.1, 2.1, 7.1), plg=plg, pax=pax, las=1, col=colfunc(20))
这会产生以下情节:
现在我的问题:是否可以
a) 增加图例和轴之间的距离? b) 在所有 4 个轴侧都有刻度线,但仅在 2 侧标记刻度线? c) 创建包含“经度和纬度”信息的刻度线,即其中的 N 和 W? d) 更改刻度线的位置和标签?
我知道
plg =
调用中的 pax =
和 plot()
参数,但我无法找到 plg
和 pax
中所有可能参数的列表,因为它们似乎与使用的参数不同在“正常”axis
功能中。
a) 增加图例和轴之间的距离?
您可以使用
plg$ext
设置连续图例的位置(对于其他图例类型,它的工作方式有点不同,需要改进)
b) 在所有 4 个轴侧都有刻度线,但仅在 2 侧标记刻度线?
您可以使用
pax()
值 tick=1:4
、side=1:4
、lab=1:2
c) 创建包含“经度和纬度”信息的刻度线,即其中的 N 和 W?
你可以使用
pax()
参数retro=TRUE
(应该有一个更好的名字)
使用六十进制表示法。
例如
library(terra)
#terra 1.6.24
f <- system.file("ex/elev.tif", package="terra")
r <- rast(f)
colfunc <- colorRampPalette(c("#08306b", "#f7fbff"))
# list with details for legend
plg = list(ext=c(6.75, 6.8, 49.5, 50.1),
title = expression(bold("Depth [m]")),
title.cex = 0.9, cex = 0.7, shrink=0 )
pax=list(side=2:3, tick=c(1,4), lab=1:2, retro=TRUE)
plot(r, plg=plg, pax=pax, las=1, col=colfunc(20))
d) 更改刻度线的位置和标签?
您可以使用
pax()
参数 xat
和 yat
作为位置,使用 xlabs
和 ylabs
作为标签。例如
pax <- list(xat=c(6,6.4), yat=c(49.5, 49.75, 50), ylabs=c("A", "B", "C"),
retro=TRUE, tick=1:4)
plot(r, plg=plg, pax=pax, las=1, col=colfunc(20))
您正在寻找的控制级别在 CRAN 版本中不可用(以相当简单的方式),并且您有效地请求了新功能(并且它们尚未记录)。最好的地方是 在 github 上,但我知道很难知道某件事是否无法完成(功能请求)或者您是否只是不知道如何做(寻求帮助)。