Как изменить фон графика объекта ctree в 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))

Пожалуйста, помогите, мой постер должен быть готов в четверг!


person JGM    schedule 02.12.2015    source источник


Ответы (1)


И пакет party, и его преемник partykit основаны на пакете grid для визуализации. Поэтому функция par() для базовой графики игнорируется при создании grid графики. Для последнего есть функция gpar(), но она напрямую не поддерживает настройку фона bg.

Таким образом, в текущей версии party или partykit установка цвета фона невозможна с помощью простых аргументов - только путем предоставления адаптированных функций панели.

Однако, поскольку эта функция уже частично поддерживалась в некоторых функциях панели, я адаптировал пакет partykit в R-Forge, чтобы включить настройку фона. Для этого требуется самая последняя версия пакета:

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
)

ctree с серым фоном

Чтобы получить эту разрабатываемую версию partykit, перейдите на страницу R-Forge. пакета. Там вы можете либо проверить исходный пакет (см. "SCM") и установить его вручную, либо подождать, пока не будет собран новый пакет (см. "R-пакеты"). Последнее, надеюсь, должно быть завершено в течение нескольких часов.

person Achim Zeileis    schedule 02.12.2015
comment
Новая версия 1.0-5 пакета partykit теперь легко собирается на R-Forge (R-Forge.R-project.org/R/?group_id=26) и может быть легко установлен через install.packages(“partykit“, repos = “http://R-Forge.R-project.org“). - person Achim Zeileis; 02.12.2015
comment
Благодарю вас! У меня все еще есть небольшая проблема. Когда я пытаюсь установить пакет partykit, я получаю следующее предупреждающее сообщение: Предупреждающее сообщение: пакет partykit недоступен (для R версии 3.2.1) Когда я смотрю документацию по partykit, там говорится, что он поддерживается в R ( ›= 3.1.0), так что я не знаю, почему мне не дают его скачать/использовать. - person JGM; 02.12.2015
comment
Я также попробовал это на другом компьютере с R 3.2.2, и это тоже не сработало. - person JGM; 02.12.2015
comment
Интересно, это похоже на проблему с репозиторием R-Forge. На данный момент available.packages(contrib.url("http://R-Forge.R-project.org", "source")) выдает пустой список пакетов. Следовательно, install.packages() утверждает, что пакеты вообще недоступны. Но пакеты действительно есть. Вы можете вручную загрузить пакет .tar.gz или .zip с R-Forge.R- project.org/R/?group_id=261, а затем установите его на свой компьютер. - person Achim Zeileis; 02.12.2015