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

R语言ggtern三元图中如何正确指定模型公式?

解决方法

方案一:修正geom_interpolate_tern的公式语法

你遇到的“z未知”警告,大概率是因为数据框里没有单独的z列,或是ggtern的插值函数不需要显式在公式里声明z(毕竟三元组分满足x+y+z=1,z属于冗余变量)。

根据数据情况选择下面的公式:

  • 如果数据里有x、y、z三列(且满足x+y+z=1):
    value ~ -1 + x + y + z + x:y + x:z + y:z
    
  • 如果数据里只有x和y,直接通过推导代替z:
    value ~ -1 + x + y + x:y + x:I(1 - x - y) + y:I(1 - x - y)
    
    这里用I(1 - x - y)替代z,避免引用不存在的列。

方案二:直接用已有模型预测+绘制等高线(更推荐)

既然你已经训练好quadm模型,没必要用插值函数重新拟合,直接生成三元网格数据并预测,再用geom_contour_tern画等高线,结果会和mixexp的ModelPlot更一致:

# 生成三元网格点,n控制网格密度,数值越大图越精细
grid_df <- ggtern::create.grid(n = 100)

# 用quadm模型预测每个网格点的value
grid_df$pred_value <- predict(quadm, newdata = grid_df)

# 绘制带等高线的三元图
ggtern(data = grid_df, aes(x = x, y = y, z = z)) +
  geom_contour_tern(aes(z = pred_value)) +
  theme_minimal()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 20:45:48