我想根据R上CART Plot / rpart.plot中节点的级别更改节点的颜色。所需的绘图是这样的。
我已经做完了,直到这一步为止,我还没有做: 1.将目标变量(Setosa,Versicolor和Virginica)的值移到图表的左侧。 2.根据需要更改节点的颜色。
答案 0 :(得分:0)
通过“节点级别”,我假设您的意思是在节点上预测的类。 如果是这样,请按以下步骤进行操作(请参见rpart.plot package vignette图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])
给出以下情节