You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否通过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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 23:32:21