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

4

我正在使用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))

请帮忙,我的海报要在星期四之前提交!

1个回答

3

“party”包及其后继者“partykit”都是基于“grid”可视化包。因此,在创建“grid”图形时,基本图形的“par()”函数会被忽略。“grid”图形中有一个“gpar()”函数,但它不直接支持设置背景的“bg”。

因此,在当前版本的“party”或“partykit”中,无法通过简单的参数设置背景颜色,只能通过提供适应的面板函数来实现。

然而,由于一些面板函数已经部分支持了这个特性,我已经在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”)。后者应该在几小时内完成。

ctree with gray bg


partykit软件包的新版本1.0-5现已在R-Forge(https://R-Forge.R-project.org/R/?group_id=26)上构建完成,可以通过`install.packages(“partykit“, repos = “http://R-Forge.R-project.org“)`轻松安装。 - Achim Zeileis
谢谢!我还有一点问题。当我尝试安装partykit包时,会出现以下警告信息:警告信息:package ‘partykit’ is not available (for R version 3.2.1)。当我查看partykit文档时,它说支持R(>= 3.1.0),所以我不知道为什么不能下载/使用它。 - JGM
我也在另一台运行R 3.2.2的计算机上尝试了一下,但那也不起作用。 - JGM
有趣的是,这似乎是R-Forge存储库的问题。目前available.packages(contrib.url("http://R-Forge.R-project.org", "source"))生成一个空的软件包列表。因此,install.packages()声称根本没有可用的软件包。但实际上软件包确实存在。您可以从https://R-Forge.R-project.org/R/?group_id=261手动下载`.tar.gz`或`.zip`软件包,然后在您的计算机上安装它。 - Achim Zeileis

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接