如何在echarts4r中为每个分类值设置固定的对应显示颜色?
解决方法
echarts4r的e_color()函数不识别命名向量的名称属性,仅按传入的颜色顺序依次匹配分类,所以直接传命名向量无法实现固定分类和颜色的绑定。可以通过以下方案实现需求:
- 提前定义所有可能出现的分类对应的全局固定颜色映射,后续新增分类直接在映射表中补充即可
- 每次绘制图表前,根据当前数据里出现的分类值,按数据中分类的顺序从全局映射中提取对应颜色,再传入
e_color()
可运行示例代码
library(tibble) library(echarts4r) # 全局固定分类-颜色映射,提前把所有可能出现的class取值对应的颜色都定义好 class_color_map <- c( "A" = "red", "B" = "yellow", "C" = "blue", "D" = "green" ) # 动态数据(Shiny中可以替换为用户输入生成的响应式数据) plot_data <- tibble(class=c("A", "B"), n=c(34,12)) # 按当前数据的分类顺序提取匹配的颜色 current_colors <- class_color_map[unique(plot_data$class)] # 绘图 plot_data %>% e_charts(class) %>% e_pie(n) %>% e_color(color = current_colors)
Shiny场景适配说明
把class_color_map定义在Shiny服务端的全局位置,每次生成响应式绘图数据后,按上述逻辑提取当前分类对应的颜色再绘图即可,无论用户输入后仅出现单个分类还是多个分类,每个分类的颜色都会保持固定。
内容的提问来源于stack exchange,提问作者werN
相关产品推荐
相关产品推荐

