我正在try 使用raster包来可视化GeoTIFF文件.我不得不说,这是一个很好的 Select ,因为我更喜欢它的色彩条风格,而不是terra的包装.但同时,我也发现了一个问题:在它的输出结果中, colored颜色 条的刻度和折断(或色块)没有对齐.我真诚地希望这个问题能得到回答,我也试着在帮助文档和搜索引擎中寻找帮助,但收效甚微.

这是我的输出:Rater plot

当我们仔细看 colored颜色 条时:misaligned colorbar ticks

这是我使用的代码:

library(raster)

set.seed(123)

# Define a color palette
mycolorbar <- colorRampPalette(c(
  "#fb6203",
  "#ef9c35",
  "#f4d095",
  "#ffffff",
  "#78c6ec",
  "#349dfb",
  "#035ba8"
))

dummy_raster <- raster(matrix(nrow = 10,ncol = 10))
values(dummy_raster) <- runif(100, min = -1, max = 1)


# Plot and save as PDF
pdf(file = "mytest01082.pdf", width = 5, height = 6)

plot(dummy_raster,
     breaks = seq(-1, 1, 0.1),
     col = mycolorbar(20),
     horizontal = TRUE,
     legend.width = 1,
     legend.shrink = 1,
     axis.args = list(
       at = seq(-1, 1, 0.5),
       tcl = 0.3
     ))

dev.off()

我想知道一些简单的参数设置是否可以解决这个问题.这些未对齐的记号可能会导致一些误解.此外,我也知道future terra套餐很快就会取代raster套餐,我也真的希望在使用terra套餐来实现我想要的色条风格方面得到一些帮助.

My sincerest thanks for your help!

推荐答案

"栅格"显示一个连续的图例,即使你有课,因为你使用休息.我相信"Terra"使用"Interval"传说会表现得更好.但您可以覆盖该默认设置.

您的示例数据(分隔符较少):

library(terra)   
set.seed(123)
x <- rast(matrix(runif(100, min=-1, max=1), nrow=10, ncol=10))
mycolorbar <- colorRampPalette(c("#fb6203", "#ef9c35", "#f4d095", "#ffffff", "#78c6ec", "#349dfb", "#035ba8"))
brks <- seq(-1, 1, 0.5)  
cols <- mycolorbar(length(brks)-1)

默认的"Interval"图例

plot(x, breaks=brks, col=cols, mar=c(2,2,2,6), plg=list(cex=1.1))

enter image description here

你可以把图例放在 map 下面

plot(x, breaks=brks, col=cols, mar=c(6,2,2,2),
    plg=list(x=0, y=-1, horiz = TRUE, cex=1.2))

enter image description here

但您也可以使用连续图例,将其放在 map 下方,并设置图例符号.

plot(x, type="continuous", breaks=brks, col=cols, mar=c(6,2,2,2),
    plg=list(x="bottom"))

enter image description here

如果您要指定所需的标签,例如因为您有多个断点并需要特定的标签,则可以执行以下操作:

brks2 <- seq(-1, 1, 0.1)     
cols2 <- mycolorbar(length(brks2)-1)
plot(x, type="continuous", breaks=brks2, col=cols2, mar=c(6,2,2,2),
    plg=list(at=brks, labels=brks, x="bottom"))

enter image description here

使用Terra 1.7-69,您可以将默认的点号样式更改为"通过"、"输入"、"输出"或"无".例如:

plot(x, type="continuous", breaks=brks2, col=cols2, mar=c(6,2,2,2),
    plg=list(at=brks, labels=brks, x="bottom", tic="out"))

Terra 1.7-69目前是开发版本.可以使用以下命令进行安装

install.packages('terra', repos='https://rspatial.r-universe.dev')

R相关问答推荐

如果行和列名以相同的开头,将矩阵值设置为0

是否可以 Select 安装不带文档的R包以更有效地存储?

为什么当我try 在收件箱中使用合并功能时会出现回收错误?

在R中查找每个组不同时间段的总天数

如何对数据集进行逆向工程?

修改用R编写的用户定义函数

如何在R中合并两个基准点?

如何使用STAT_SUMMARY向ggplot2中的密度图添加垂直线

矩阵的堆叠条形图,条形图上有数字作为标签

如何从容器函数中提取conf并添加到ggplot2中?

有没有办法使用ggText,<;Sub>;&;<;sup>;将上标和下标添加到同一元素?

R中Gamma回归模型均方误差的两种计算方法不一致

如何在ggplot2中创建多个y轴(每个变量一个)

变长向量的矢量化和

如何更改包中函数中的参数?

如何在shiny 的应用程序 map 视图宣传单中可视化单点

使用一个标签共享多个组图图例符号

我怎么才能把一盘棋变成一盘棋呢?

只有当我在循环的末尾放置一条print语句时,Foreach才会给出预期的输出

使用循环改进功能( struct 简单)