如何更改 R 中 ctree 对象的绘图背景?

How to change plot background of a ctree object in R?

我正在使用 party 包制作一棵树作为海报,海报的背景是灰色的。我已经能够使用命令 par(bg = "grey") 将所有其他图(箱线图、散点图)的背景更改为灰色,但这不适用于 ctree.

例如,这会在灰色背景上绘制散点图:

airq <- subset(airquality, !is.na(Ozone))
par(bg="grey")
plot(Temp ~ Wind, data = airq)

但这不会在灰色背景上生成一棵树:

library("party")
air.ct <- ctree(Ozone ~ ., data = airq)
par(bg = "grey")
plot(air.ct, inner_panel=node_inner(air.ct, pval = TRUE, id = FALSE),
  terminal_panel = node_boxplot(air.ct, id = FALSE))

请帮忙,我的海报将于周四到期!

party 包及其后继包 partykit 都基于 grid 包进行可视化。因此,在创建 grid 图形时忽略基础图形的 par() 函数。对于后者,有一个gpar()功能,但它不直接支持设置bg背景。

因此,在 partypartykit 的当前版本中,无法通过简单的参数设置背景颜色 - 只能通过提供适配的面板函数。

但是,由于某些面板功能已经部分支持此功能,因此我在 R-Forge 上调整了 partykit 包以启用设置背景。为此需要最新版本的软件包:

library("partykit")
packageDescription("partykit")$Version
## [1] "1.0-5"   

可以按照您的示例种植树:

airq <- subset(airquality, !is.na(Ozone))
air.ct <- ctree(Ozone ~ ., data = airq)

然后我们先添加一个灰色背景的空页面:

grid.newpage()
grid.rect(gp = gpar(col = "gray", fill = "gray"))

然后可以添加树:

plot(air.ct,
  ip_args = list(id = FALSE, fill = "gray"),
  ep_args = list(fill = "gray"),
  tp_args = list(id = FALSE, bg = "gray", fill = "slategray"),
  newpage = FALSE
)

要获取partykit这个开发版,请到包的R-Forge页面。在那里您可以检查源包(请参阅 "SCM")并手动安装它 - 或者您可以等到新包已构建(请参阅 "R Packages")。后者有望在几个小时内完成。