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

如何自定义R中ctree终端节点:替换条形图为死亡占比与样本量

自定义ctree终端节点显示方案

要将ctree绘图的终端节点从条形图替换为包含死亡百分比和样本量的矩形框,只需自定义plot()函数的terminal_panel参数即可实现,具体步骤如下:

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

这个函数会自动计算每个终端节点的死亡占比和样本量,并在矩形框内输出对应文本:

# 自定义终端节点面板函数
custom_terminal_panel <- function(node) {
  # 提取节点的响应变量数据
  y <- node$response
  # 计算死亡百分比(请根据你的status实际类别调整"死亡"为对应值,比如1/0等)
  death_pct <- round(mean(y == "死亡") * 100, 1)
  # 获取节点样本量
  n <- length(y)
  
  # 绘制白色填充的矩形框
  grid.rect(gp = gpar(fill = "white", col = "black"))
  # 在框内添加文本
  grid.text(paste0("死亡百分比: ", death_pct, "%\nn = ", n), 
            gp = gpar(fontsize = 6))
}

注意:如果你的status中代表死亡的不是"死亡"字符串,务必替换为实际的类别标识(比如数值1、"Dead"等)。

2. 调用plot时指定自定义面板

修改原绘图代码,将自定义函数传入terminal_panel参数:

library(partykit)

fit.all.cov <- ctree(as.factor(status) ~ Age.groups + Sex + Education + Migrant.background + Income + Living.situation, 
                     data = training_cov,
                     control = ctree_control(maxdepth = 3))

# 使用自定义面板绘制树图
plot(fit.all.cov, 
     gp = gpar(fontsize = 6),
     terminal_panel = custom_terminal_panel)

可选样式调整

  • 若要修改矩形框样式:调整grid.rect的gpar参数,比如fill = "lightblue"设置浅蓝色背景,lwd = 2加粗边框。
  • 若要调整文本样式:修改grid.text的gpar参数,比如fontsize = 7放大字体,col = "darkgreen"设置文本颜色。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 17:33:15