r - 边缘上的 R partykit::ctree 偏移标签
问题描述
我正在使用ctree
并且我的数据集具有创建节点的因素的协变量。该协变量有足够的因子,并且它们的名称足够长,以至于它们在节点处创建的边中相互重叠。我想找到一种方法来阻止这种重叠。
我检查了其他问题并找到了一个可以提供帮助的答案。的情节ctree
依赖于grid
包,我可以使用函数在边缘写新标签。plot
我现在的问题是,当我创建树时,我不知道如何抑制默认打印的标签。我不太了解grid
或plot.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")
这会将“2seater,compact”堆叠在“midsize,subcompact”之上,并防止它们重叠“minivan,pickup,suv”。但是现在,我原来的太长标签还在情节中。我正在尝试修复的标签所连接的边缘在与新堆叠标签不兼容的地方有一个中断。修复那个边缘会很好,但真正的问题是在 edge1-1 上抑制原始的、太长的标签。
解决方案
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))
plot(irt, ep_args = list(justmin = 15), gp = gpar(fontsize = 10))
推荐阅读
- javascript - 加载后如何从 html 站点中删除元素?
- python - 在 django 中使用 mysql 进行身份验证
- r - 如何通过igraph计算加权度中心性?
- paypal - 在 Zapier 中使用 Webhooks 和 PayPal API 从特定 PayPal 交易中获取交易信息
- javascript - 动画到部分时禁用滚动
- bash - 在 MacOS 终端 bash shell 脚本中用新行替换逗号
- rabbitmq - 有没有办法在 aio-pika 中捕捉消费者取消的事件?
- c# - 找不到类型或命名空间名称“无钥匙”
- c# - 在进程开始之前,做某事
- javascript - 渐进式 Web 应用程序安装提示未出现在移动浏览器上