【问题标题】:How do I jitter the node split strings in plotting ctree output from partykit?如何在从partykit 绘制 ctree 输出时抖动节点拆分字符串?
【发布时间】:2013-05-16 07:38:53
【问题描述】:

我有一个问题,我在分类树中主要使用分类数据,设置为一类因子。我在 R 中使用 partykit 包,而不是 party,因为之前的答案表明前一个包更适合处理图形输出。

我的真实数据集中没有很多节点(大约 7 个),但我有很多变量的因子水平,我遇到的问题是拆分左侧的因子水平和来自右侧相互干扰。具体来说,这是因为因子水平列表的水平方向以及因子水平的长度。

我可以使用 MASS 包中的 Aids2 数据集重现该问题。这是一个无意义的例子,但它会产生我希望解决的行为

library("partykit")
SexTest <- ctree(sex ~ ., data=Aids2)
plot(SexTest)

如果您查看节点 1 的节点拆分信息,您将看到我描述的行为:

在我的真实数据框中,缩小字体只有在我将字体缩小到 4 点时才有效,这是不可读的。

有没有办法为该字符串定义一个文本框,并使文本能够换行?我查看了pargpar 试图找到解决方案,但没有成功。另一种合适的选择是错开每个节点的因子信息的垂直位置,以便它们位于另一个之下。

【问题讨论】:

    标签: r graphics plot par


    【解决方案1】:

    嗯。我去过那儿。在不修改 partykit 包的内部结构的情况下,我不知道有什么方法可以改善特定大小的输出(我经常遇到问题,即 X 轴标签在条形图输出上太长,因为绘制了多分树因变量)。

    这是一个丑陋的解决方法,但您可以从树中获取输出以了解哪些类别去哪里,然后使用 GIMP 之类的东西适当地突出显示您的 powerpoint/report/whatever 的图像。

    Model formula:
    sex ~ state + diag + death + status + T.categ + age
    
    Fitted party:
    [1] root
    |   [2] T.categ in hs, hsid, haem, other
    |   |   [3] T.categ in hs, hsid, haem
    |   |   |   [4] state in NSW, Other, VIC: M (n = 2386, err = 0.0%)
    |   |   |   [5] state in QLD: M (n = 197, err = 0.5%)
    |   |   [6] T.categ in other: M (n = 70, err = 10.0%)
    |   [7] T.categ in id, het, blood, mother: M (n = 190, err = 42.6%)
    
    Number of inner nodes:    3
    Number of terminal nodes: 4
    

    您还可以将输出的大小调整为更大,例如使用 png()

    png('tmp.png',width=1024,height=768)
    plot(SexTest)
    dev.off()
    

    【讨论】:

      【解决方案2】:

      另一种方法是在相关点手动拆分列表。您可以通过更改您希望新行包含“\n”的级别名称来做到这一点:“haem\n”。这看起来有点难看,因为该线随后与因子水平部分重叠,但这是迄今为止我发现的唯一真正的解决方法。

      【讨论】:

        猜你喜欢
        • 2017-06-17
        • 2015-08-19
        • 2015-07-12
        • 2020-10-21
        • 1970-01-01
        • 2020-12-01
        • 2020-05-20
        • 2018-02-23
        • 2012-11-24
        相关资源
        最近更新 更多