如何使用 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)
使用定义的颜色效果很好,但是当我使用仅包含分类变量的某些值的数据子集创建图形时,颜色分配会混淆并且不稳定:
- first plot with defined colors
- second plot with a subset and mixed up colors
一个选项正在使用以下代码将颜色(使用本网站的 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
)
输出:
如何使用稳定映射为 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)
使用定义的颜色效果很好,但是当我使用仅包含分类变量的某些值的数据子集创建图形时,颜色分配会混淆并且不稳定:
- first plot with defined colors
- second plot with a subset and mixed up colors
一个选项正在使用以下代码将颜色(使用本网站的 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
)
输出: