在绘制来自partykit的ctree输出时,如何抖动节点拆分字符串?

时间:2013-05-16 07:38:54

标签: r graphics plot par

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

我的真实数据集中没有很多节点(大约7个),但是我对一些变量有很多因子水平,我遇到的问题是分裂左侧的因子水平和来自右边互相干扰。具体而言,这是因为因子水平列表的水平方向与因子水平的长度相结合。

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

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

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

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

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

2 个答案:

答案 0 :(得分:2)

嗯。我去过那儿。如果不修改partykit包的内部结构,我就不知道如何改善特定大小的输出(我经常在条形图输出上使用X轴标签输出太长的问题多重因变量)。

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

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()

larger resolution output from plot

答案 1 :(得分:1)

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