如您所说,传达相同信息的一种方法是指示底部和顶部颜色代表“小于 -10”和“大于 15”。这相当于说斜坡的两端分别是负无穷和正无穷。
您可以通过以下方式使用 rasterVis::levelplot:
# First, some fake data
r <- raster(matrix(runif(100, -20, 30), 10))
library(rasterVis)
levelplot(r, margin=FALSE, at=c(-Inf, seq(-10, 15, 2.5), Inf),
colorkey=list(at=seq(-12.5, 17.5, 2.5),
labels=c(expression(-infinity),
seq(-10, 15, 2.5),
expression(infinity)))
)
上面,levelplot 的 at 参数控制绘图中颜色发生变化的间隔。我们将其设置为,-Inf 和 -10 之间的值是一种颜色,然后颜色每 2.5 个单位变化一次,直到 15,之后颜色保持不变,直到 Inf。 colorkey 列表的 at 元素控制颜色图例的颜色中断。负无穷和正无穷将由 -12.5 和 17.5 表示。 colorkey 的 labels 元素确定将在这些位置绘制的标签。我们可以使用expression 来包含无穷大符号。
如果您想使用发散坡道,您可以根据坡道的负侧与正侧的长度手动计算合适的坡道。例如,在上面的示例中,我们需要 7 种正色和 5 种负色,因此我们可以创建 14 种颜色的渐变,并排除前 2 种颜色:
library(RColorBrewer)
colr <- colorRampPalette(rev(brewer.pal(11, 'RdBu')))(14)[3:14]
然后通过这个坡道到col.regions:
levelplot(r, margin=FALSE, at=c(-Inf, seq(-10, 15, 2.5), Inf),
colorkey=list(at=seq(-12.5, 17.5, 2.5),
labels=c(expression(-infinity),
seq(-10, 15, 2.5),
expression(infinity))),
col.regions=colr
)