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

如何修改Alluvial Diagram流向颜色并自定义调色板?

自定义ggalluvial冲积图的调色板与流向颜色

1. 自定义调色板的命令

当然有,在ggplot2生态中,最灵活的自定义填充颜色方式是使用scale_fill_manual(),它允许你手动指定每个分类变量对应的颜色。此外也可以用scale_fill_viridis_d()(离散型)、scale_fill_gradient()(连续型)等函数实现半自定义调色,但scale_fill_manual()完全可控,最适合你的场景。

2. 针对你的ggalluvial代码修改方案

首先注意你的代码里有个小问题:绘图时用了df.2,但前面数据处理的对象是df,需要先修正这个笔误。然后替换原来的scale_fill_brewer()为scale_fill_manual(),指定每个status水平对应的颜色即可自定义流向(冲积)的颜色。

修改后的完整代码:

library(ggalluvial)
library(ggplot2)
library(dplyr)

df <- data.frame(status = c("open", "close", "close", "open/close", "close"), 
                 stock = c("google", "amazon", "amazon", "yahoo", "amazon"), 
                 newspaper = c("times", "newyork", "london", "times", "times"))

# 统计每个冲积的出现次数
df <- df %>% dplyr::group_by(stock, newspaper, status) %>% 
  summarise(n = n(), .groups = "drop")  # 加上.groups避免dplyr警告

# 定义因子水平
df$status <- factor(df$status, levels = c("open", "open/close", "close"))
df$stock <- factor(df$stock, levels = c("google", "amazon", "yahoo"))
df$newspaper <- factor(df$newspaper, levels = c("times", "newyork", "london"))

# 绘制冲积图,自定义流向颜色
ggplot2::ggplot(df, aes(y = n, axis1 = stock, axis2 = newspaper)) +
  ggalluvial::geom_alluvium(aes(fill = status), width = 1/12) +
  ggalluvial::geom_stratum(width = 1/12, fill = "black", color = "grey") +
  ggplot2::geom_label(stat = "stratum", aes(label = after_stat(stratum))) +
  ggplot2::scale_x_discrete(limits = c("stock", "newspaper"), expand = c(.05, .05)) +
  # 自定义颜色映射:对应status的每个因子水平
  ggplot2::scale_fill_manual(values = c(
    "open" = "#1f77b4",       # 蓝色
    "open/close" = "#ff7f0e", # 橙色
    "close" = "#2ca02c"       # 绿色
  ))

关键说明

  • scale_fill_manual()的values参数需要传入一个命名向量,名称对应你的分类变量(这里是status)的每个水平,值是你想要的颜色(可以是十六进制码、颜色名称如"red"、RGB值等)。
  • 如果你想使用现成的调色板但手动选择颜色,也可以用RColorBrewer::brewer.pal()提取颜色,比如values = RColorBrewer::brewer.pal(3, "Set2"),但要确保颜色数量和分类水平数一致。

内容的提问来源于stack exchange,提问作者Erik Brole

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 17:30:48