R语言image.plot绘图如何调整图例标签仅显示-1、0、1三个值
你可以通过调整fields包image.plot函数的内置参数实现需求,核心用到legend.breaks指定图例分段边界、axis.args指定刻度的位置和标签,修改后的代码如下:
col <- c("red", "white", "blue") # 设置配色 # 定义图例分段边界,让三个离散值各自对应独立颜色块 legend_breaks <- c(-1.5, -0.5, 0.5, 1.5) # 定义图例刻度配置 legend_axis <- list( at = c(-1, 0, 1), # 刻度位置刚好落在每个颜色块的中心 labels = c("-1", "0", "1"), cex.axis = 1 # 可按需调整标签大小 ) image.plot(lon.list[[1]], lat.list[[1]], MK.list3[[6]][[8]], main = paste0("Drought Index Trend ", names(Index.list[[1]])[1]), col = col, xlab = "Longitude [°]", ylab = "Latitude [°]", legend.lab = "", legend.line = 2.5, zlim = c(-1,1), # 新增两个控制图例的参数 legend.breaks = legend_breaks, axis.args = legend_axis) plot(sf_object, add = T, border = "Black")
原理说明:你的数据只有-1、0、1三个离散取值,我们把图例的分段边界设在两个取值的中间位置,保证每个颜色块仅对应一个取值,再将刻度位置设置在每个颜色块的中心,即可实现目标效果。如果实际运行后发现刻度有轻微偏移,可手动微调at参数内的数值适配画布比例。
内容的提问来源于stack exchange,提问作者climsaver
相关产品推荐
相关产品推荐

