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

如何在fvisgam绘图中将发散配色的中心色设为对应0值?

调整fvisgam等高线图的颜色中心至0值

要让RdBu配色的白色对应0值,核心是手动指定颜色映射的**中点(midpoint)**和数值范围,覆盖默认的对称映射逻辑(默认中点是数据极值的平均值,即(-1+0.2)/2=-0.4)。以下是具体解决方案:

方法说明

fvisgam返回的是ggplot对象,因此可以通过添加ggplot的颜色刻度层,或直接在fvisgam的col.scale参数中定义自定义颜色映射,强制将0设为颜色中点。

修改后的代码

library(ggplot2)
library(colorspace)
library(mgcv)
library(itsadug)
library("viridis")
library("RColorBrewer")

# 读取数据集
est_vaed10 <- read.csv("10x10_vaed_c_est_vs_coverage-table.csv")

# 拟合GAM模型
m1 <- gam(relative_spn_median  ~ te(c_est, v.coverage), data=est_vaed10, family="gaussian")

# 定义RdBu反转配色(蓝-白-红)
color_palette <- rev(brewer.pal(11, "RdBu"))

# 生成图形并设置颜色映射,将0作为颜色中点
fvisgam(m1, view=c("c_est", "v.coverage"), 
        col.scale = scale_fill_stepsn(
          colors = color_palette,
          limits = c(-1, 0.2),  # 你的拟合值范围
          midpoint = 0,         # 指定白色对应的数值
          breaks = seq(-1, 0.2, length.out = 11)  # 匹配11个颜色的断点
        ), 
        main="fvisgam plot (White = 0)", n.seg=2)

关键参数解释

  • limits = c(-1, 0.2):锁定颜色映射的数值范围,确保覆盖你的拟合值区间。
  • midpoint = 0:将配色的中心(白色)指定为0值。
  • breaks:生成与11个颜色对应的数值断点,保证颜色均匀分布在-1到0.2之间。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 04:32:20