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()
最后,您可以使用一些相同作者对派对包的更新且尚未完成的重新实现。在这一点上(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
另一种选择(这不会改变你想要的,但可能会解决潜在的问题)是改变图形本身的大小,正如我在课堂上学到的那样。
替换下面的 r:
{r}
和:
{r, fig.width=X, fig.height=Y}
X 和 Y 需要替换为您选择的数字,具体取决于您认为哪种尺寸效果更好。
该网站在整个文档中更详细且普遍地讨论了这样做。