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

如何在单图中为两组(a、b)分别使用不同的viridis调色板?

按分组设置不同viridis颜色渐变方案

需求说明

需要为数据中的group列(a、b两组)分别指定不同的viridis调色板(a组用plasma,b组用viridis),替代原代码中统一的调色板设置。

解决方案

scale_color_viridis_c无法直接按分组映射不同调色板,可借助ggnewscale包实现多组独立的颜色渐变映射。具体步骤如下:

  • 加载tidyverse和ggnewscale包
  • 分别筛选两组数据进行绘制,每组使用独立的scale_color_viridis_c,通过new_scale_color()分隔不同的颜色比例尺

完整可运行代码

# 首次运行需安装依赖包
install.packages(c("tidyverse", "ggnewscale"))

library(tidyverse)
library(ggnewscale)

# 生成示例数据并绘图
data.frame(site  = sample(LETTERS[1:4], 10000, replace = TRUE),
           group = sample(letters[1:2], 10000, replace = TRUE),
           x     = rnorm(10000, 20, 5)) %>% 
  mutate(y = x + rnorm(10000, 0, 1),
         z = rnorm(10000, 0, 1)) %>% 
  ggplot() +
  # 绘制a组,使用plasma调色板
  geom_point(data = . %>% filter(group == "a"), aes(x, y, col = z)) +
  scale_color_viridis_c(option = "plasma", name = "Group a (z)") +
  # 切换到新的颜色比例尺
  new_scale_color() +
  # 绘制b组,使用viridis调色板
  geom_point(data = . %>% filter(group == "b"), aes(x, y, col = z)) +
  scale_color_viridis_c(option = "viridis", name = "Group b (z)") +
  facet_wrap(~site)

效果说明

运行后,a组数据会采用plasma色系的颜色渐变,b组采用viridis色系,两组的颜色图例分别显示,可清晰区分不同分组的z值映射关系。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 09:33:11