能否通过ggparty::geom_node_plot()修改填充色?scale_fill_manual失效问题
解决ggparty中scale_fill_manual不生效的问题
你遇到的问题是scale_fill_manual()在geom_node_plot()的gglist配置中未生效,核心原因是组件的组合方式有误,导致标度设置无法正确作用于节点内的条形图。
调整后的代码如下:
library(ggparty) #> Loading required package: ggplot2 #> Loading required package: partykit #> Loading required package: grid #> Loading required package: libcoin #> Loading required package: mvtnorm sp_o <- partysplit(1L, index = 1:3) n1 <- partynode(id = 1L, split = sp_o, kids = lapply(2L:4L, partynode)) t2 <- party(n1, data = WeatherPlay, fitted = data.frame( "(fitted)" = fitted_node(n1, data = WeatherPlay), "(response)" = WeatherPlay$play, check.names = FALSE), terms = terms(play ~ ., data = WeatherPlay) ) ggparty(t2) + geom_edge() + geom_edge_label() + geom_node_splitvar() + geom_node_plot(gglist = list( ggplot(aes(x = "", fill = play)), geom_bar(position = position_fill()), xlab("play"), scale_fill_manual(values = c("lightblue", "blue")) ))
关键调整说明:
- 将
ggplot()基础层单独作为gglist的一个元素,明确声明全局映射fill = play,确保后续的标度设置能正确识别并作用于这个映射 - 将
scale_fill_manual()作为独立组件加入gglist,避免和xlab()合并在一起导致作用范围异常
修改后,节点内的条形图就会应用你指定的lightblue和blue填充颜色。
内容的提问来源于stack exchange,提问作者jtr13
相关产品推荐
相关产品推荐

