Под "уровнем узла" я предполагаю, что вы имеете в виду класс, предсказанный на узле.
Если это так, сделайте это следующим образом (см. Виньетка с пакетом 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])
, который дает следующий сюжет