You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在R的levelplot/lattice中调整绘图配色为蓝红白渐变?

用levelplot实现正负值分色(蓝/红)、0值附近白色的气候地图

问题描述

我用R的levelplot绘制全球气候数据地图,想把默认配色改成:正值用蓝色系、负值用红色系、0及附近用白色。现有绘图代码,但不确定levelplot是否支持这种调整,ggplot里倒是很容易实现,求方法。
现有代码:

#packages installed
library(raster)
library(ncdf4)
library(maps)
library(maptools)
library(rasterVis)
library(ggplot2)
library(rgdal)
library(sp)
library(gridExtra)
library(grid)
library(RColorBrewer)

#Using levelplot

FPlot10 <- levelplot(FDifference5,margin=F,at=c(seq(-50,150,10)),pretty=TRUE, 
par.settings=mapTheme, main="Higher end")
FM10 <- FPlot10 + latticeExtra::layer(sp.lines(world.outlines.sp))

解决方案

levelplot完全支持这种自定义配色方案,核心是通过构建分段颜色向量,配合at参数的断点精准对应正负值和0附近的区间。

1. 构建自定义配色向量

先匹配你代码里的断点seq(-50,150,10),分别生成红色系(负值)、白色(0附近)、蓝色系(正值)的颜色:

# 定义断点(和原代码一致)
breaks <- seq(-50, 150, 10)

# 生成各区间颜色:
# 负值区间(-50到-10):红色系(深→浅,对应绝对值大→小的负值)
red_pal <- rev(RColorBrewer::brewer.pal(5, "Reds"))
# 0附近区间(-10到10):白色,对应两个断点间隔(-10→0、0→10)
white_pal <- rep("white", 2)
# 正值区间(10到150):蓝色系(浅→深,对应值小→大)
blue_pal <- RColorBrewer::brewer.pal(15, "Blues")

# 合并所有颜色成完整配色向量
custom_pal <- c(red_pal, white_pal, blue_pal)

2. 在levelplot中应用配色

将自定义配色通过col.regions参数传入,确保at参数和配色区间数量匹配:

# 调整后的levelplot代码
FPlot10 <- levelplot(FDifference5, 
                     margin = FALSE,
                     at = breaks,
                     col.regions = custom_pal,  # 关键:应用自定义配色
                     pretty = TRUE,
                     par.settings = mapTheme, 
                     main = "Higher end")

FM10 <- FPlot10 + latticeExtra::layer(sp.lines(world.outlines.sp))

3. 细节优化

  • 如果需要调整0附近白色区间的宽度,修改breaks即可。比如想让白色对应-5到5,断点改成c(seq(-50,-5,5), seq(-5,5,1), seq(5,150,5)),同时对应调整white_pal的长度(比如rep("white",10)对应10个小间隔)。
  • 若不想用Brewer配色,可使用colorRampPalette自定义渐变,比如:
    red_ramp <- colorRampPalette(c("darkred", "lightcoral"))(5)
    blue_ramp <- colorRampPalette(c("lightblue", "navy"))(15)
    

内容的提问来源于stack exchange,提问作者Android17

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 12:21:49