4

我正在使用ctree并且我的数据集具有创建节点的因素的协变量。该协变量有足够的因子,并且它们的名称足够长,以至于它们在节点处创建的边中相互重叠。我想找到一种方法来阻止这种重叠。

我检查了其他问题并找到了一个可以提供帮助的答案。的情节ctree依赖于grid包,我可以使用函数在边缘写新标签。plot我现在的问题是,当我创建树时,我不知道如何抑制默认打印的标签。我不太了解gridplot.party弄清楚需要抑制哪个对象。

下图中我的问题 在第一条边上具有重叠标签的绘图示例 示例:我的示例问题的代码:

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”。我最终在情节中看到的是“2seater,compact,midsize,subcompaminivan,pickup,sub”。我已经将图形设备设为全屏。(我有其他只有一个节点的树,所以在全屏维度上看起来很奇怪,所以我不想来回走动。)

我的部分解决方案是

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

在边 1 上部分修复坏标签的绘图

这会将“2seater,compact”堆叠在“midsize,subcompact”之上,并防止它们重叠“minivan,pickup,suv”。但是现在,我原来的太长标签还在情节中。我正在尝试修复的标签所连接的边缘在与新堆叠标签不兼容的地方有一个中断。修复那个边缘会很好,但真正的问题是在 edge1-1 上抑制原始的、太长的标签。

4

1 回答 1

5

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-字体大小

于 2019-03-07T17:13:35.777 回答