ctree 图的终端节点中的缩放图

Posted

技术标签:

【中文标题】ctree 图的终端节点中的缩放图【英文标题】:Scaling plots in the terminal nodes of ctree graph 【发布时间】:2015-09-09 16:02:11 【问题描述】:

我正在尝试缩放出现在 ctree 终端节点中的图。我尝试使用 yscale 参数,但这只是导致超出绘图窗口的绘图

例如:这是两个指数分布的 ctree

set.seed(1)    
classA <-data.frame(class = "a", val = round(rexp(500, rate = 0.2),0))
classB <-data.frame(class = "b", val = round(rexp(500, rate = 0.05),0))

df <- as.data.frame(rbind(classA,classB))

ct = ctree(val~., data = df)
plot(ct)

现在,如果我尝试将绘图的 y 轴从 0 缩放到 70 以放大箱形图并截断异常值,我可以使用:

plot(ct,terminal_panel = node_boxplot(ct,yscale =c(0,70)))

这可以缩放 y 轴,但现在绘图超出了绘图框。

抱歉,我会显示图片,但在 *** 上还没有足够的权限。

感谢您的任何建议

【问题讨论】:

【参考方案1】:

首先:在这样的示例中,最好对响应进行对数转换,因为ctree() 中使用的关联测试将更有能力检测树中分裂的差异。如果有精确的零点,一些小的连续性校正可能会有所帮助。

但是,当然,终端节点的适当缩放问题与此分开。原因是终端节点的视口没有设置为clip = TRUE,因此没有裁剪视口区域之外的图形元素。

我刚刚在 R-Forge 上的 partykit 包中解决了这个问题。尚未安排新的 CRAN 版本,但您可以查看 R-Forge 的 partykit-SVN 或下载当前的 partykit/R/plot.R 源代码。

【讨论】:

非常好!谢谢阿奇姆!当我尝试新的源代码时,我会告诉你。我意识到我的例子有点傻,我只是想快速说明缺少剪辑功能。谢谢:) partykit 软件包的新修复版本现已发布到 CRAN (1.0-2)。如果您使用它,您的示例将按需要工作。 抱歉,我花了这么长时间才回到这个问题上。我下载并尝试了新版本的partykit。我现在可以使用 plot(ct,terminal_panel = node_boxplot(ct,yscale =c(0,70))) 缩放 y 轴。但是,partykit 没有显示 y 轴 tic 标签有一个新问题。我将这个问题作为一个新线程发布在这里:link to post 任何帮助将不胜感激! CRAN 上的partykit 包的新版本(1.0-4)修复了刻度线的问题,同时保留了绘图区域的剪裁。因此,使用该版本的软件包,您的两个请求都应该得到解决。

以上是关于ctree 图的终端节点中的缩放图的主要内容,如果未能解决你的问题,请参考以下文章

ctree 在 R 中的派对包中绘制决策树,终端节点出现一些奇怪的数字 - 问题?

ctree()的终端节点如何提取拆分规则

如何打印带有范围的数值变量的 ctree 终端节点

ctree() - 如何获取每个终端节点的拆分条件列表?

如何为 ctree(打包方)的终端节点添加标签?

旋转分类树终端条形图轴 - R