我想使用强大的ggparty包绘制决策树(由partykit包估计),一切都很好,除了数值分割变量的小数位数。我该如何在geom_edge_label()中格式化breaks_label,例如在下面的图中将">75.33333"更改为">75.3"?round()无效。我可以通过通用的options(digits = 3)来使用解决方法,但我想知道是否有更直接的方法。
library("ggparty")
data("WeatherPlay", package = "partykit")
sp_o <- partysplit(1L, index = 1:3)
sp_h <- partysplit(3L, breaks = 75 + 1/3)
sp_w <- partysplit(4L, index = 1:2)
pn <- partynode(1L, split = sp_o, kids = list(
partynode(2L, split = sp_h, kids = list(
partynode(3L, info = "yes"),
partynode(4L, info = "no"))),
partynode(5L, info = "yes"),
partynode(6L, split = sp_w, kids = list(
partynode(7L, info = "yes"),
partynode(8L, info = "no")))))
py <- party(pn, WeatherPlay)
ggparty(py) +
geom_edge() +
# geom_edge_label() +
geom_edge_label(mapping = aes(label = paste(breaks_label))) +
geom_node_splitvar() +
geom_node_info()
这个示例是由reprex包(v0.3.0)在2020年03月05日创建的。
geom_edge_label(mapping = aes(label = paste(round(breaks_label,1)))
这个无法工作吗? - TTSbreaks_label
是某种特殊对象,可以解析为能够添加(不)相等符号的对象。也请查看https://github.com/martin-borkovec/ggparty/wiki/5-geom_edge_label。 - hplieningerpyplot$data$breaks_label
中的字符串可以让我以一种非常间接的方式达到所需的解决方案。如果没有直接的解决方案出现,如果您愿意花时间并发布答案,我将接受您的答案。 - hplieninger