使用grDevices::terrain.colors()绘制LAS报错,如何手动选RGL窗口颜色?
lidR包点云绘图pal参数报错解决方案
问题背景
- 本地运行脚本仅弹出警告,可正常生成点云图;同事电脑及远程桌面运行同一脚本直接报错
- 绘图代码:
lidR::plot(las, size=5, pal=grDevices::terrain.colors(30), axis=TRUE) - 报错信息:
Error in is.character(pal) && pal == "auto" : 'length = 30' in coercion to 'logical(1)'
解决方法
这个错误是不同版本lidR对pal参数的要求不一致导致的——旧版本要求pal必须是调色板名称(字符型),而非直接传入颜色向量。
方法1:使用调色板名称替代颜色向量
把直接生成的颜色向量换成调色板名称,让lidR内部处理颜色生成,还能通过ncolors指定颜色数量:# 基础用法 lidR::plot(las, size=5, pal="terrain", axis=TRUE) # 指定30种颜色 lidR::plot(las, size=5, pal="terrain", ncolors=30, axis=TRUE)其他可用调色板名称如
"viridis"、"heat"等,和R基础调色板名称对应。方法2:手动指定颜色映射(适配新版lidR)
如果统一升级到新版lidR,可通过color参数直接传入自定义颜色向量:# 提取点云的Z值作为颜色映射依据 z_vals <- las@data$Z # 将Z值分段后匹配自定义颜色 custom_colors <- grDevices::terrain.colors(30)[cut(z_vals, breaks=30)] # 传入color参数绘图 lidR::plot(las, size=5, color=custom_colors, axis=TRUE)方法3:统一环境包版本
用sessionInfo()查看本地正常运行的lidR版本,让同事和远程桌面安装完全相同的版本,从根源避免版本兼容问题。
内容的提问来源于stack exchange,提问作者EmburMaps
相关产品推荐
相关产品推荐

