更改 R 中地形图中的轴标签位置、刻度线和图例

问题描述 投票:0回答:1

我是 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
功能中。

r raster terra
1个回答
4
投票

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 上,但我知道很难知道某件事是否无法完成(功能请求)或者您是否只是不知道如何做(寻求帮助)。

© www.soinside.com 2019 - 2024. All rights reserved.