首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何绘制大型ctree()以避免节点重叠

如何绘制大型ctree()以避免节点重叠
EN

Stack Overflow用户
提问于 2012-12-07 04:28:23
回答 2查看 34.6K关注 0票数 26

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

有没有办法自定义plot()的输出,使方框和字体更小?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-12-09 01:20:50

简短的答案似乎是,不,你不能改变字体大小,但有一些其他的好选择。

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

默认绘图示例

代码语言:javascript
复制
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

简化的绘图

代码语言:javascript
复制
# 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)
   )

这在某种程度上是更好的,并且可以进一步改进它。为了弄清楚这些细节,我最初做了返回"BinaryTree“的class(airct)。有了这些信息,我开始阅读?plot.BinaryTree

写入文件

第二个简单的解决方案是将绘图写入文件,然后查看该文件。您可能需要尝试这些设置以找到最佳匹配。

代码语言:javascript
复制
png("airct.png", res=80, height=800, width=1600) 
   plot(airct) 
dev.off()

改为使用partykit包绘制

最后,您可以使用一些相同作者的更新的、尚未完成的party包的重新实现。在这一点上(2012年12月),他们重做的唯一函数是ctree()。此版本允许您更改字体大小。

代码语言:javascript
复制
    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)
  )

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

票数 30
EN

Stack Overflow用户

发布于 2018-06-05 08:21:50

另一种选择(不会改变你想要的东西,但有可能解决潜在的问题)是改变图形本身的大小,就像我在我的作业课上学到的那样。

替换下面中的r:

代码语言:javascript
复制
{r}

通过以下方式:

代码语言:javascript
复制
{r, fig.width=X, fig.height=Y} 

其中,X和Y需要替换为您根据您认为更好的大小选择的数字。

This website,在整个文档中更详细、更普遍地讨论了这一点。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13751962

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档