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

使用Lattice包wireframe()绘制剖面时色条显示异常求助

解决Lattice wireframe()地形剖面色条异常的问题

我懂你现在的困扰——用wireframe()画地形剖面时,色条变成了完全不符合预期的粉红色,和你想要的“海洋蓝+陆地灰”配色差得老远。别着急,我们来搞定这个问题:

问题出在哪?

你用get.box()拿到的bathy对象直接传给wireframe()时,它压根没继承你在plot(Bathy2)里设置的bpal配色规则,而是用了lattice默认的颜色映射。这个默认映射不会区分地形的正负值(陆地是正、海洋是负),所以才搞出了奇怪的粉红色色条。

怎么解决?

我们得手动给wireframe()指定和地形数据匹配的颜色映射,具体分三步:

  • 把bathy对象转成数据框,这样更容易控制颜色
  • 做一个自定义配色函数,让负值(海洋)用蓝色系,正值(陆地)用灰色系
  • 在wireframe()里明确指定颜色和色条的设置,让它们和配色规则对应上

修改后的完整代码

require(marmap)
require(lattice)
require(ggplot2) # 用来把bathy对象转成数据框

# 获取地形数据
Bathy2 <- getNOAA.bathy(lon1 = 30, lon2 = 47, lat1 = -12, lat2 = -28, resolution = 2)

# 绘制区域地图+剖面线
plot(Bathy2, image=TRUE, land = TRUE, lwd = 0.03, 
     bpal = list(c(0, max(Bathy2), greys), c(min(Bathy2), 0, blues)))
belt3 <- get.box(Bathy2, x1 = 34, x2 = 46, y1 = -20, y2 = -20, width = 3, col = "red")

# 把bathy对象转换成数据框格式
belt3_df <- fortify.bathy(belt3)
# 提取z值的最大最小值,用来设置颜色区间
z_range <- range(belt3_df$z, na.rm = TRUE)
z_min <- z_range[1]
z_max <- z_range[2]

# 创建自定义配色:从蓝色(海洋)渐变到灰色(陆地)
color_palette <- colorRampPalette(c(blues(100), greys(100)))
# 设置颜色断点,以0为海陆分界点
color_breaks <- c(seq(z_min, 0, length.out = 100), seq(0, z_max, length.out = 100))

# 绘制3D剖面
wireframe(z ~ x + y, data = belt3_df, shade = TRUE, zoom = 1.1, 
          aspect = c(1/4, 0.1), screen = list(z = -60, x = -55), 
          par.settings = list(axis.line = list(col = "white")), 
          par.box = c(col = rgb(0, 0, 0, 0.1)), 
          xlab = "", 
          col.regions = color_palette(length(color_breaks)-1),
          colorkey = list(at = color_breaks, labels = list(at = c(z_min, 0, z_max))))

重点说明

  • fortify.bathy(belt3):marmap的bathy对象是特殊格式,转成数据框后lattice才能更好地处理颜色映射
  • colorRampPalette(c(blues(100), greys(100))):和你之前plot()里的配色逻辑完全一致,海洋用蓝色,陆地用灰色
  • col.regions:告诉wireframe()用我们自定义的颜色填充地形
  • colorkey的at参数:让色条的刻度和颜色区间对应,确保色条能正确展示从海洋到陆地的颜色渐变

这样调整后,色条就会显示正常的蓝灰渐变,和你一开始的地图配色统一啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:44:00