如何在R中编辑ctree标签

时间:2017-05-01 19:56:58

标签: r tree boxplot axis-labels party

我有一个ctree,我想对它进行进一步的编辑。

我的代码是:

plot(ct,
  main = expression('Suitable Brook Trout Habitat (m'^2*'/100m'^2*')'), 
  inner_panel = node_inner(ct, fill = c("white"), id = FALSE),
  terminal_panel = node_boxplot(ct, col = "black", fill = "lightgray",
    width = 0.5, yscale = NULL, ylines = 3, cex = 0.5, id = FALSE)
)

ctreeimage

我想在箱线图上的y轴和16.4等变量上添加标签(希望它是16.4米)。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

执行此操作并非完全直截了当,因为必须调整面板功能以在不同的面板中执行不同的操作。例如,您只需要节点1两边的仪表,您只需要节点2左侧的y轴标签。当然,您也可以在节点4和5中重复y轴标签,但它会多余的。这是完全忽略它以避免视觉混乱的主要动机。

因此,我的建议是首先按照上面的步骤创建绘图,然后手动添加所需的位和部分。为此,可以利用所谓grid的{​​{1}}系统。这些是为内部节点,边缘和所有终端节点创建的绘图区域。默认情况下,在创建绘图后删除视图(在viewport术语中称为pop ping视口)。但您可以通过设置grid来保留它们。然后,所有视口都具有可用于导航的相当简单的名称。

对于可重现的示例,我使用R中的pop = FALSE数据,这也产生了一个包含三个终端节点的树:

cars

然后可以在示例中设置图表,最后只添加library("partykit") ct <- ctree(dist ~ speed, data = cars)

pop = FALSE

对于节点3中的y轴标签,我们可以跳转到标签为plot(ct, main = expression('Suitable Brook Trout Habitat (m'^2*'/100m'^2*')'), inner_panel = node_inner(ct, fill = c("white"), id = FALSE), terminal_panel = node_boxplot(ct, col = "black", fill = "lightgray", width = 0.5, yscale = NULL, ylines = 3, cex = 0.5, id = FALSE), pop = FALSE ) 的视口。 (当然,在您的情况下,节点"node_boxplot3plot"而不是2。)然后,我们可以使用3添加y轴标签。坐标是水平-3行(文本)和垂直中间(0.5标准化父坐标):

grid.text()

最后,我们在节点1的第一个和第二个边缘标签中添加seekViewport("node_boxplot3plot") grid.text("Hello World!", x = unit(-3, "lines"), y = unit(0.5, "npc"), rot = 90) 。这些标签分别称为"m""edge1-1"。现在,水平位置再次是该视口的中间位置(o.5 npc)加上字符串"edge1-2"的宽度(在您的情况下为"< 17"):

"< 16.4"

一起产生:

ctree with enhanced labels