Подтвердить что ты не робот

Как построить большой ctree(), чтобы избежать перекрытия узлов

Когда я построил дерево решений из пакета ctree() из party, шрифт был слишком большим, и поле тоже было слишком большим. Они перекрывают другие узлы.

Есть ли способ настроить вывод из plot(), чтобы поле и шрифт были меньше?

4b9b3361

Ответ 1

Короткий ответ кажется, нет, вы не можете изменить размер шрифта, но есть и другие хорошие варианты.

Я знаю три возможных решения. Во-первых, вы можете изменить другие параметры на графике, чтобы сделать его более компактным. Во-вторых, вы можете записать его в графический файл и просмотреть этот файл. В-третьих, вы можете использовать альтернативную реализацию ctree() в пакете partykit, который является более новым пакетом некоторыми из тех же авторов.

Пример графика по умолчанию

library(party)
airq <- subset(airquality, !is.na(Ozone))
airct <- ctree(Ozone ~ ., data = airq, 
               controls = ctree_control(maxsurrogate = 3))
plot(airct)  #default plot, some crowding with N hidden on leafs

default plot

Упрощенный сюжет

# simpler version of plot
plot(airct, type="simple",           # no terminal plots
  inner_panel=node_inner(airct,
       abbreviate = TRUE,            # short variable names
       pval = FALSE,                 # no p-values
       id = FALSE),                  # no id of node
  terminal_panel=node_terminal(airct, 
       abbreviate = TRUE,
       digits = 1,                   # few digits on numbers
       fill = c("white"),            # make box white not grey
       id = FALSE)
   )

enter image description here

Это несколько лучше, и можно было бы улучшить его дальше. Чтобы выяснить эти детали, я изначально сделал class(airct), который вернул "BinaryTree". Вооружившись этой информацией, я начал читать ?plot.BinaryTree

Запись в файл

Второе простое решение - записать график в файл, а затем просмотреть файл. Возможно, вам придется играть с настройками, чтобы найти наилучшие результаты.

png("airct.png", res=80, height=800, width=1600) 
   plot(airct) 
dev.off()

Участок с пакетом partykit вместо

Наконец, вы можете использовать более новую и еще не завершенную повторную реализацию пакета партии некоторыми из тех же авторов. На этом этапе (декабрь 2012) единственная функция, которую они переделали, - ctree(). Эта версия позволяет изменять размер шрифта.

    library(partykit) 
    airct <- ctree(Ozone ~ ., data = airq)
    class(airct)  # different class from before
    # "constparty" "party"  
plot(airct, gp = gpar(fontsize = 6),     # font size changed to 6
  inner_panel=node_inner,
  ip_args=list(
       abbreviate = TRUE, 
       id = FALSE)
  )

enter image description here

Здесь я оставил листы в настройках по умолчанию, потому что я откровенно не понял, как заставить его работать так, как я хочу. Я подозреваю, что это связано с тем, что пакет неполный (по состоянию на декабрь 2012 года). Вы можете прочитать о методе сюжета, начиная с ?plot.party