如何自定义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
相关产品推荐
相关产品推荐

