如何使用 R highcharter 中的稳定映射将颜色分配给分类变量?

How to assign colors to categorical variables with a stable mapping in R highcharter?

如何使用稳定映射为 R highcharter 中的分类变量分配颜色?我想在具有此变量的不同子集的大量图形中使用一致的颜色。因此,我想为所有图形全局定义颜色映射。

有一个非常similar question使用ggplot2。我尝试在我的案例中使用解决方案,但到目前为止没有成功。

这是我的数据的一个最小示例:

faculty cost
physics 8000
life sciences 1050
chemistry 1000

到目前为止,这是我的代码:

library(tidyverse)
library(highcharter)

ColorPalette <- c("green","blue","red")
names(ColorPalette) <- levels(publications$faculty)

hchart(
  publications,
  "column",
  hcaes(x = faculty, y = cost),
  colorByPoint = TRUE
  ) %>%
  hc_colors(ColorPalette)

使用定义的颜色效果很好,但是当我使用仅包含分类变量的某些值的数据子集创建图形时,颜色分配会混淆并且不稳定:

一个选项正在使用以下代码将颜色(使用本网站的 CSS 样式:https://www.rapidtables.com/web/color/RGB_Color.html)分配给不同的教员值:

library(tidyverse)
library(highcharter)

publications <- data.frame(faculty = c("physics", "life sciences", "chemistry"),
                           cost = c(8000, 1050, 1000))

publications <- mutate(publications, color = ifelse(faculty == "physics", "#00FF00", 
                                             ifelse(faculty == "life sciences", "#0000FF", "#FF0000")))

您不需要使用 hc_colors,因为您可以使用以下代码分配 hcaes 中的颜色:

hchart(
  publications,
  "column",
  hcaes(x = faculty, y = cost, color = color),
  colorByPoint = TRUE
) 

输出: