将条形图添加到 partykit 绘制树中内部节点的圆圈
Add barplots to circles in inner nodes in partykit plotted trees
partykit
包在树的终端节点处绘制条形图,直观呈现因变量的后验概率 类。
我想在内部节点中也添加这些条形图,低于标准 circles/ellipses。这需要使用一个混合了 node_inner()
和 node_barplot()
的函数到 plot()
方法的 inner_panel
参数。
但是这些函数的内部结构非常复杂,我不确定如何将两者混合使用才能使内部图垂直堆叠。
有什么想法吗?
有可能,只是看起来不太吸引人。如果要显示拆分变量的名称和 p-value,最好调整 node_barplot
的 mainlab
参数。在回答
Ctree classification with weights - results displayed 插图中有如何在标题中包含权重 - 以类似的方式,您可以显示拆分变量和 p-value。
如果您决定设置一个具有两个子面板的新面板功能,则需要一些 grid
编程(plot()
方法所基于的图形系统)。您需要设置一个 grid.layout
,然后通过生成的 viewport
s.
make_inner_and_barplot <- function(object, ...) {
function(node) {
## layout
pushViewport(viewport(layout = grid.layout(nrow = 2, ncol = 1,
heights = unit(c(0.2, 0.8), "npc"))))
## background color
grid.rect(gp = gpar(fill = "white", col = 0))
## circle
pushViewport(viewport(layout.pos.col = 1, layout.pos.row = 1))
node_inner(object)(node)
popViewport()
## circle
pushViewport(viewport(layout.pos.col = 1, layout.pos.row = 2))
node_barplot(object, id = FALSE, ...)(node)
popViewport(2)
}
}
使用生成的面板功能,您可以执行以下操作:
ct <- ctree(factor(cyl) ~ ., data = mtcars, minsplit = 2)
plot(ct, inner_panel = make_inner_and_barplot(ct), tnex = 0.8)
partykit
包在树的终端节点处绘制条形图,直观呈现因变量的后验概率 类。
我想在内部节点中也添加这些条形图,低于标准 circles/ellipses。这需要使用一个混合了 node_inner()
和 node_barplot()
的函数到 plot()
方法的 inner_panel
参数。
但是这些函数的内部结构非常复杂,我不确定如何将两者混合使用才能使内部图垂直堆叠。
有什么想法吗?
有可能,只是看起来不太吸引人。如果要显示拆分变量的名称和 p-value,最好调整 node_barplot
的 mainlab
参数。在回答
Ctree classification with weights - results displayed 插图中有如何在标题中包含权重 - 以类似的方式,您可以显示拆分变量和 p-value。
如果您决定设置一个具有两个子面板的新面板功能,则需要一些 grid
编程(plot()
方法所基于的图形系统)。您需要设置一个 grid.layout
,然后通过生成的 viewport
s.
make_inner_and_barplot <- function(object, ...) {
function(node) {
## layout
pushViewport(viewport(layout = grid.layout(nrow = 2, ncol = 1,
heights = unit(c(0.2, 0.8), "npc"))))
## background color
grid.rect(gp = gpar(fill = "white", col = 0))
## circle
pushViewport(viewport(layout.pos.col = 1, layout.pos.row = 1))
node_inner(object)(node)
popViewport()
## circle
pushViewport(viewport(layout.pos.col = 1, layout.pos.row = 2))
node_barplot(object, id = FALSE, ...)(node)
popViewport(2)
}
}
使用生成的面板功能,您可以执行以下操作:
ct <- ctree(factor(cyl) ~ ., data = mtcars, minsplit = 2)
plot(ct, inner_panel = make_inner_and_barplot(ct), tnex = 0.8)