rasterVis::levelplot:调整栅格图层标题名称与文本大小
解决rasterVis::levelplot的图层名称与文本大小问题
问题说明
使用rasterVis::levelplot绘制栅格栈时遇到两个问题:
- 自定义的图层名称未生效,仍显示默认名称且空格被替换为点号
- 无法调整绘图文本(包括图层标题、轴标签等)的大小
错误原因分析
- 栅格创建失误:代码中给
r2设置投影时错误指向r1,导致r2投影未正确配置 - 参数理解偏差:
main参数控制的是整个绘图的大标题,而非子图的图层标题;图层标题样式需通过strip.custom和par.settings调整 - 名称显示规则:默认情况下
levelplot会将名称中的空格替换为点号,需显式指定显示名称
修正后的代码及解释
# 加载工具包 library(raster) library(rasterVis) # 创建栅格1 r1 = raster(ext=extent(c(-69.5, -56, -56, -49)), res=c(0.5, 0.5)) r1[] <- c(1,3,4,5) crs(r1) <- "+proj=longlat +datum=WGS84 +no_defs +ellps=WGS84 +towgs84=0,0,0" # 创建栅格2(修正投影设置错误) r2 = raster(ext=extent(c(-69.5, -56, -56, -49)), res=c(0.5, 0.5)) r2[] <- c(2,5,7,8) crs(r2) <- "+proj=longlat +datum=WGS84 +no_defs +ellps=WGS84 +towgs84=0,0,0" # 创建栅格栈并设置名称 s <- stack(r1, r2) custom_names <- c("My raster 1", "My raster 2") names(s) <- custom_names # 定义颜色方案 col <- rev(heat.colors(999)) # 绘制levelplot,自定义名称与文本大小 p <- levelplot( s, col.regions = col, names.attr = custom_names, # 强制保留空格的自定义图层名称 main = list(label = "栅格栈可视化", cex = 1.5), # 设置大标题及字号 par.settings = list( axis.text = list(cex = 0.8), # 轴标签文本大小 axis.title = list(cex = 1) # 轴标题文本大小 ), strip = strip.custom( par.strip.text = list(cex = 1.2) # 子图图层标题的文本大小 ) ) p
关键参数说明
names.attr:显式指定子图显示名称,避免空格被自动替换为点号main:通过list(label = "标题内容", cex = 字号)设置全局大标题par.settings:统一配置轴标签、轴标题等全局文本样式strip.custom:单独调整子图标题的字号,par.strip.text控制具体大小
内容的提问来源于stack exchange,提问作者user303287
相关产品推荐
相关产品推荐

