当我从ctree()包中的party绘制决策树结果时,字体太大,盒子也太大。它们与其他节点重叠。

有没有一种方法可以自定义plot()的输出,从而使框和字体变小?

最佳答案

简短的答案似乎是,不,您不能更改字体大小,但是还有其他一些不错的选择。

我知道三种可能的解决方案。首先,您可以更改图中的其他参数以使其更紧凑。其次,您可以将其写入图形文件并查看该文件。第三,您可以在partykit程序包中使用ctree()的替代实现,这是一些相同作者的较新程序包。

默认绘图示例

library(party)
airq <- subset(airquality, !is.na(Ozone))
airct <- ctree(Ozone ~ ., data = airq,
               controls = ctree_control(maxsurrogate = 3))
plot(airct)  #default plot, some crowding with N hidden on leafs

简化图
# simpler version of plot
plot(airct, type="simple",           # no terminal plots
  inner_panel=node_inner(airct,
       abbreviate = TRUE,            # short variable names
       pval = FALSE,                 # no p-values
       id = FALSE),                  # no id of node
  terminal_panel=node_terminal(airct,
       abbreviate = TRUE,
       digits = 1,                   # few digits on numbers
       fill = c("white"),            # make box white not grey
       id = FALSE)
   )

这样会更好一些,也许可以进一步改进它。为了弄清楚这些细节,我最初做了class(airct),它返回了“BinaryTree”。有了这些信息,我开始阅读?plot.BinaryTree
写入文件

第二种简单的解决方案是将绘图写入文件,然后查看文件。您可能需要进行设置才能找到最合适的设置。
png("airct.png", res=80, height=800, width=1600)
   plot(airct)
dev.off()

用partykit包代替

最后,您可以使用某些相同作者对party包进行的更新且尚未完成的实现。此时(2012年12月),他们重新执行的唯一功能是ctree()。此版本允许您更改字体大小。
    library(partykit)
    airct <- ctree(Ozone ~ ., data = airq)
    class(airct)  # different class from before
    # "constparty" "party"
plot(airct, gp = gpar(fontsize = 6),     # font size changed to 6
  inner_panel=node_inner,
  ip_args=list(
       abbreviate = TRUE,
       id = FALSE)
  )

在这里,我将叶子保留为其默认设置,因为坦率地说,我从来没有想过如何使其按我想要的方式工作。我怀疑这与软件包不完整(截至2012年12月)有关。您可以了解以?plot.party开头的plot方法

关于r - 如何绘制大的ctree()以避免节点重叠,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13751962/

10-12 20:03