我想根据R上CART Plot / rpart.plot中节点的级别更改节点的颜色。所需的绘图是这样的。
在完成此步骤之前,我尚未完成:1.将目标变量(Setosa,Versicolor和Virginica)的值移到图表的左侧。2.根据需要更改节点的颜色。
通过“节点级别”,我假设您的意思是在节点上预测的类。如果是这样,请按以下步骤进行操作(请参见rpart.plot包小插图图1的底部图):
library(rpart.plot)
png("aswin.png")
data(iris)
tree <- rpart(Species~., data=iris)
# may have to play with value of legend.x and legend.y for your plot
rpart.plot(tree, type=1, extra=4, legend.x=-.25, legend.y=1.2)
dev.off()
给出以下情节
如果用“节点的级别”代替,则表示树中节点的深度,则第一个示例图形令人困惑,因为在该图中左侧叶节点的深度(1.00 .00 .00)为2,但是其颜色与深度为3的其他叶节点的颜色相同。但是,以下代码将根据其在树中的深度为节点着色:
library(rpart.plot)
data(iris)
tree <- rpart(Species~., data=iris)
node.depth <- function(node.number)
{
node.depth <- 1
while(node.number > 1) {
node.number <- node.number %/% 2
node.depth <- node.depth + 1
}
node.depth
}
# node numbers in order they appear in tree$frame
node.numbers <- as.numeric(row.names(tree$frame))
# depth of each node in node.numbers
node.depths <- integer(length(node.numbers))
for(i in 1:length(node.depths))
node.depths[i] <- node.depth(node.numbers[i])
colors <- topo.colors(n=max(node.depths)) # change these colors to taste
rpart.plot(tree, type=1, extra=4,
fallen.leaves=FALSE, nn=TRUE, # optional
box.col=colors[node.depths])
给出以下情节
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句