R partykit :: ctree偏移边缘上的标签

问题描述 投票:0回答:1

我正在使用ctree,我的数据集有一个创建节点的协变量。该协变量有足够的因子,它们的名称足够长,它们在节点处创建的边缘彼此重叠。我想找到一种方法来阻止这种重叠。

我检查了其他问题,发现一个answer提供了一些帮助。 ctree的情节依赖于grid包,我可以使用函数在边缘上写新标签。我现在的问题是,我不知道如何在我plot树时压制默认打印的标签。我不太了解gridplot.party来确定需要抑制哪个对象。

以下图片中我的问题示例:example of plot with overlapping labels on first edge我的示例问题的代码:

libary(partykit)
library(tidyverse) #this is here for the mpg data set in next line. not required for partykit
data(mpg)
irt <- ctree(hwy~as.factor(class),data=mpg)
plot(irt)

得到的第一个节点有一个边缘有“2seater,compact,midsize,subcompact”,另一个边缘有“minivan,pickup,suv”。我最终在情节中看到的是“2座,紧凑型,中型,次级摩擦,皮卡,子”。我已经把图形设备全屏了。 (我有其他只有一个节点的树,因此在全屏尺寸上看起来很奇怪,所以我不想来回走。)

我的部分解决方案是

plot(irt, pop=FALSE)
seekViewport("edge1-1")
grid.text("2seater, compact,\n midsize, subcompact")

plot with partial fix of bad labels on edge 1

这将“2seater,compact”叠加在“中型,超小型”之上,并使它们不会重叠“小型货车,皮卡,suv”。但是现在,我还有原版太长的标签。并且我正在尝试修复的标签所附带的边缘在不能与新堆叠标签一起使用的地方中断。修复这个边缘会很好,但真正的问题是抑制了edge1-1上原来的太长的标签。

r label party ctree
1个回答
0
投票

边缘标签由edge_simple()函数绘制,该函数为边缘标签提供各种理由,请参阅?edge_simple。只有当边缘标签平均长于justmin,默认为Inf(即:无理由)时,才会应用理由。各种理由是可能的(交替,增加,减少或相等)。

因此,在您的情况下,最简单的解决方案可能是将justmin设置为足够小的有限值。或者(或另外),您还可以通过设置gpar(fontsize = ...)来减小字体大小。为了说明,以下两个示例都是在6英寸x 8英寸PNG设备上生成的:

library("partykit")
data("mpg", package = "ggplot2")
irt <- ctree(hwy ~ factor(class), data = mpg)
plot(irt, ep_args = list(justmin = 15))

ctree-justmin

plot(irt, ep_args = list(justmin = 15), gp = gpar(fontsize = 10))

ctree-justmin-fontsize

© www.soinside.com 2019 - 2024. All rights reserved.