如何使用gridGraphics转换分类树图
我使用rpart估算了分类树(CART):如何使用gridGraphics转换分类树图,r,gridview,plot,tree,R,Gridview,Plot,Tree,我使用rpart估算了分类树(CART): library(rpart) treefit <- rpart(Kyphosis ~ Age + Number + Start, data = kyphosis, control = rpart.control(cp = 0.001)) 然后,我尝试使用程序包gridGraphics的grid.echo命令将绘图转换为使用grid绘制的相同结果 我收到以下错误消息: Error in unit(x, default.unit
library(rpart)
treefit <- rpart(Kyphosis ~ Age + Number + Start, data = kyphosis,
control = rpart.control(cp = 0.001))
然后,我尝试使用程序包gridGraphics的grid.echo命令将绘图转换为使用grid绘制的相同结果
我收到以下错误消息:
Error in unit(x, default.units) : 'x' and 'units' must have length > 0
我尝试了另一种可视化树的工具,包rpart.plot:
再说一遍:
Error in unit(x, default.units) : 'x' and 'units' must have length > 0
当我试图转换party、RWeka和Rgraphviz生成的树图时,我也从grid.echo获得错误消息。
该命令似乎只能转换由rpart生成的绘图:
不幸的是,这些图是原始的,不令人愉快。我无法提供完整的解决方案,但至少有一些评论和备选方案:
rpart.plot
的fancyRpartPlot()
和rpart.plot()的。在内部,前者调用后者(或者实际上从同一个包调用其同级函数prp()
)。因此,两者都会导致同样的问题,这并不奇怪。然而,我不知道如何解决这个错误
方
(或者更好的是其后续包partykit
)和RWeka
的绘图无法转换的事实并不令人惊讶。它们已使用网格绘制
!您还可以使用partykit
基础结构绘制rpart
树:
library("partykit")
plot(as.party(treefit))
亲爱的Achim,您的评论非常有用,并为我提供了一种使用gridSVG生成交互式树的方法。谢谢大家!@achim zeileis,感谢您对统计界做出的巨大贡献!你知道吗,有没有办法将party
树转换为rpart
表示法?没有,我们没有尝试过这样做,因为rpart
格式确实是特定于CART算法的,不能轻易表示其他树算法中使用的信息。你可能会为重要的部分找到解决办法,但我们总是觉得这不值得(对我们来说)。据我所知,没有其他人试图编写这样的接口。
library(rpart.plot)
rpart.plot(treefit)
grid.echo()
Error in unit(x, default.units) : 'x' and 'units' must have length > 0
plot(treefit)
text(treefit)
grid.echo()
grid.ls()
graphics-plot-1-xlab-1
graphics-plot-1-ylab-1
graphics-plot-1-text-1
graphics-plot-1-lines-1
graphics-plot-1-text-2
graphics-plot-1-text-3
library("partykit")
plot(as.party(treefit))