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

如何修改R中ctree终端节点绘图?移除$err与$distribution

移除ctree终端节点中的$err和$distribution的解决方法

我来帮你搞定这个ctree绘图的问题!要去掉partykit绘制决策树时终端节点里的$err和$distribution信息,最灵活的方式是自定义终端面板函数——因为默认的node_terminal并没有直接的开关参数来隐藏这些内容,自己写面板函数就能完全控制显示的信息。

1. 定义自定义终端面板函数

我们创建一个只保留需要内容(比如预测值)的面板函数,完全跳过错误和分布信息:

# 自定义终端面板:仅显示预测值(可按需调整内容)
my_terminal_panel <- function(node, digits = 1, id = FALSE, ...) {
  # 获取节点的预测结果
  pred_val <- node$prediction
  # 构建要显示的文本(这里只保留预测值,可自行添加其他信息)
  display_text <- paste0("预测值: ", round(pred_val, digits))
  
  # 在节点中绘制文本
  grid::grid.text(display_text, gp = gpar(fontsize = 5))
  
  # 可选:如果需要显示节点ID,取消下面的注释
  # if (id) {
  #   grid::grid.text(paste0("节点 ", node$id), x = 0.05, y = 0.05, 
  #                   just = c("left", "bottom"), gp = gpar(fontsize = 5))
  # }
}

2. 修改绘图代码

把原来的terminal_panel = node_terminal(...)替换成我们自定义的函数即可:

library(openxlsx)
library('partykit')

# 读取数据并构建决策树
data <- read.xlsx("2005.XLSX", sheet = 1)
tree <- ctree(inc_total~., data=data, control = ctree_control(maxdepth = 5))

# 使用自定义面板绘制决策树
plot(tree, type='simple',
     inner_panel=node_inner(tree, id=FALSE), 
     terminal_panel = my_terminal_panel(tree, digits=1, id=FALSE, gp=gpar(fontsize=5)))

# 计算MSE(这部分保持不变)
mean((data$inc_total - predict(tree))^2)

额外调整(可选)

如果需要在终端节点添加其他信息(比如节点内的样本量),可以修改display_text的内容:

display_text <- paste0("样本量: ", node$n, "\n预测值: ", round(pred_val, digits))

这样就能完全控制终端节点显示的内容,去掉不需要的$err和$distribution啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 04:24:43