我有一个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)
)
我想在箱线图上的y轴和16.4等变量上添加标签(希望它是16.4米)。
非常感谢任何帮助。
答案 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"
一起产生: