当我绘制来自party包的ctree()的决策树结果时,字体太大,框也太大。它们与其他节点重叠。
有没有办法自定义plot()的输出,使方框和字体更小?
发布于 2012-12-09 01:20:50
简短的答案似乎是,不,你不能改变字体大小,但有一些其他的好选择。
我知道三种可能的解决方案。首先,您可以更改绘图中的其他参数以使其更紧凑。其次,您可以将其写入图形文件并查看该文件。第三,您可以在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)
)

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

在这里,我将leafs保留为默认设置,因为坦率地说,我从来没有想过如何让它以我想要的方式工作。我怀疑这与软件包不完整的事实有关(截至2012年12月)。您可以阅读以?plot.party开头的plot方法
发布于 2018-06-05 08:21:50
另一种选择(不会改变你想要的东西,但有可能解决潜在的问题)是改变图形本身的大小,就像我在我的作业课上学到的那样。
替换下面中的r:
{r}通过以下方式:
{r, fig.width=X, fig.height=Y} 其中,X和Y需要替换为您根据您认为更好的大小选择的数字。
This website,在整个文档中更详细、更普遍地讨论了这一点。
https://stackoverflow.com/questions/13751962
复制相似问题