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

如何在R语言中绘制展示三因素响应面的三元热图

R语言绘制三元响应面热图方案

你原来的代码主要问题是插值公式没有匹配你定义的三阶交互模型,且插值网格密度不足导致渐变效果不符合预期,以下是调整后的可运行代码:

# 加载所需包
library(ggtern)
library(ggplot2)

# 构造数据集
X <- rep(c(.45,.4,.55,.4,.43,.5,.43,.5,.43,.48), each = 3)
Y <- rep(c(.15, .12,.22,.14,.14,.19,.12, .17,.17,.12 ), each = 3)
Z <- rep(c(.15,.22,.12,.12,.19,.14,.14,.17,.12,.17), each = 3)
Gi <- c(353,381,320,312,335,265,394,350,374,320,299,316,300,304,295,360,331,395,351,280,342,299,303,279,374,364,419,306,290,315)
dt <- data.frame(X, Y, Z, Gi)

# 拟合你定义的三阶交互线性模型
mdl <- lm(Gi ~ X*Y*Z, data = dt)

# 绘图代码
ggtern(data = dt, aes(x = X, y = Y, z = Z, value = Gi)) +
  # 调整插值参数:匹配三阶交互模型,提高网格密度使渐变平滑
  stat_interpolate_tern(
    geom = "polygon",
    formula = value ~ x*y*z, 
    method = lm,
    n = 200,
    aes(fill = ..level..), 
    expand = 1
  ) +
  # 调整渐变配色,可按需修改
  scale_fill_gradient(low = "green", high = "blue", name = "Gi值") +
  # 调整散点样式,加黑色边框更醒目
  geom_point(fill = "white", size = 3, shape = 21, color = "black") +
  theme_gray() +
  theme(tern.axis.arrow.show = TRUE)

关键调整说明

  • 插值公式修改为value ~ x*y*z,完全匹配你定义的Gi和X/Y/Z的三阶交互关联关系
  • 新增n=200参数提高插值网格分辨率,解决原来渐变区域块感强的问题
  • 散点增加黑色边框,和渐变背景区分度更高
  • 为填充色增加了含义明确的图例标题
    如果需要和预期效果更贴近,还可以修改scale_fill_gradient的配色参数,或者调整theme中的轴标签、网格线样式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 19:36:03