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

在R的ggplot2中,如何将一列映射为fill美学并指定另一列填充色?

解决ggplot中按Client映射fill并使用自定义HexColor的问题

要实现fill美学映射到Client列(图例显示Client名称),同时填充色取自对应的HexColor列,核心是手动指定Client与HexColor的映射关系,具体步骤如下:

步骤1:提取Client与HexColor的唯一对应关系

因为每个Client对应唯一的HexColor,先从数据中提取这种对应关系并转为命名向量:

# Base R 写法
color_map <- setNames(unique(mydata$HexColor), unique(mydata$Client))

# 或 dplyr 写法(需加载dplyr包)
library(dplyr)
color_map <- mydata %>% 
  distinct(Client, HexColor) %>% 
  deframe()

步骤2:绘制柱形图

将fill映射到Client,再通过scale_fill_manual()指定自定义颜色映射:

ggplot(data = mydata) + 
  geom_col(mapping = aes(x=YearMonth, y=Sales, fill=Client)) +
  scale_fill_manual(values = color_map)

为什么之前的方法不适用?

  • 第一种方法直接映射fill=Client,ggplot会使用默认配色方案,无法匹配自定义HexColor;
  • 第二种方法映射fill=HexColor,虽然颜色正确,但图例显示的是十六进制码而非Client名称,不符合需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 10:45:59