在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
相关产品推荐
相关产品推荐

