R partykit :: ctree边缘偏移标签

时间:2019-03-06 20:06:59

标签: r label party ctree

我正在使用 <select id="busyness" name="busyness" class="form-control mt-1" v-model="workloadLevels" @@change="onWorkloadFilterChange($event)"> <option v-for="wl in workloadLevels" v-bind:value="wl.id">{{ wl.description }}</option> </select> <div v-for="op in officeProjections" class="mt-1"> <div class="card"> <div class="card-body"> <h3 class="card-title">{{ op.consultantName }}</h3> <p>{{ op.workloadLevel }} <button type="button" v-bind:id="op.ConsultantId" class="btn btn-lg btn-info" data-toggle="popover" data-placement="right" v-bind:data-content="op.comment"></button></p> <p>{{ op.office }}</p> </div> </div> </div> ,并且我的数据集具有创建节点的因子协变量。该协变量有足够的因子,它们的名称足够长,以至于它们在节点处创建的边缘彼此重叠。我想找到一种方法来阻止这种重叠。

我检查了其他问题,发现其中一个answer提供了一些帮助。 ctree的绘图依赖于ctree包,我可以使用函数在边缘上编写新标签。现在的问题是,我grid树时,我不知道如何禁止显示默认打印的标签。我对plotgrid知之甚少,无法找出需要抑制的对象。

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

plot.party

所得的第一个节点的一侧为“ 2人座,紧凑,中型,超小型”,另一侧为“小型货车,皮卡,越野车”。我最终在情节中看到的是“ 2人座,紧凑型,中型,超小型面包车,皮卡,小型”。我已经使图形设备全屏显示。 (我还有其他只有一个节点的树,这使得它们在全屏尺寸下看起来很奇怪,所以我不想来回走动。)

我的部分解决方案是

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)

plot with partial fix of bad labels on edge 1

将“ 2人座,紧凑型”堆叠在“中型,超小型”顶部,并使它们不会重叠“微型货车,皮卡,SUV”。但是现在,我仍然在情节中保留原始的过长标签。我尝试固定的标签所贴的边缘在一个地方折断了,该地方不适用于新的堆叠标签。修复该边缘会很好,但真正的问题是抑制edge1-1上原始的,过长的标签。

1 个答案:

答案 0 :(得分: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