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

在ggplot2中使用ggsci的scale_color_jama()手动指定配色

手动指定ggsci中JAMA配色的特定颜色

这问题我之前实操时也遇到过,其实scale_color_jama()提供了非常灵活的方式来指定自定义颜色子集,两种方法都能满足你的需求:

方法1:直接传入颜色代码

既然你已经明确知道要使用的两个颜色是#00A1D5FF和#B24745FF,可以直接把它们放进scale_color_jama()的values参数里。注意颜色顺序要和你的variable类别对应(这里psavert会匹配第一个颜色,uempmed匹配第二个):

library(tidyverse)
library(ggsci)

economics_long %>% 
  filter(variable %in% c("psavert", "uempmed")) %>%  # 用%in%写法更简洁
  ggplot(aes(date, value01, colour = variable)) + 
  geom_line(size = 4) + 
  scale_color_jama(values = c("#00A1D5FF", "#B24745FF"))

方法2:利用pal_jama的切片生成颜色向量

如果你不想手动敲颜色代码,完全可以用你提到的pal_jama("default")(5)[3:4]来生成目标颜色,再把这个向量传给values参数,这样后续调整选色位置时只需修改索引即可:

library(tidyverse)
library(ggsci)

# 提前生成选中的JAMA颜色
selected_jama_cols <- pal_jama("default")(5)[3:4]
# 可以用show_col(selected_jama_cols)再次确认颜色是否正确

economics_long %>% 
  filter(variable %in% c("psavert", "uempmed")) %>% 
  ggplot(aes(date, value01, colour = variable)) + 
  geom_line(size = 4) + 
  scale_color_jama(values = selected_jama_cols)

小提示

如果担心颜色和类别不匹配,可以先查看过滤后数据中variable的水平顺序:

economics_long %>% 
  filter(variable %in% c("psavert", "uempmed")) %>% 
  pull(variable) %>% 
  levels()

确保values里的颜色顺序和这个输出的顺序一致就行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 16:02:57