【发布时间】:2020-10-01 12:32:26
【问题描述】:
我正在使用 c3 绘制一些线条。如果两行完全相同,C3 将覆盖它们并在图例中使用 不同 颜色。我希望图例中的颜色相同。
这里有一些例子
# If two lines are identical, colour them the same
library(tidyverse)
library(c3)
# Dark red, blue, orange, black, purple
cbpal <- c("#800000", "#4363d8", "#f58231", "#000000", "#dcbeff")
# Companies A and B are should be dark red. Companies C and D should be blue
df1 <- tibble(
date = seq(as.Date("2020-01-01"), by = "month", length.out = 4),
comp_A = rep(4, 4),
comp_B = rep(4, 4),
comp_C = rep(2, 4),
comp_D = rep(2, 4)
)
# Company A and B should be dark red. Companies C, D, E, should all be blue
df2 <- tibble(
date = seq(as.Date("2020-01-01"), by = "month", length.out = 4),
comp_A = rep(4, 4),
comp_B = rep(4, 4),
comp_C = rep(3, 4),
comp_D = rep(3, 4),
comp_E = rep(3, 4)
)
# Company A and B should be dark red. Companies C, D, should all be blue
# Companies E, F, should all be orange
df3 <- tibble(
date = seq(as.Date("2020-01-01"), by = "month", length.out = 4),
comp_A = rep(4, 4),
comp_B = rep(4, 4),
comp_C = rep(3, 4),
comp_D = rep(3, 4),
comp_E = rep(2, 4),
comp_F = rep(2, 4)
)
c3(df1)
df1_pal <- c("#800000", "#800000", "#4363d8","#4363d8")
c3(df1) %>%
c3_color(df1_pal)
c3(df2)
df2_pal <- c("#800000", "#800000", "#4363d8","#4363d8", "#4363d8")
c3(df2) %>%
c3_color(df2_pal)
c3(df3)
df3_pal <- c("#800000", "#800000", "#4363d8","#4363d8", "#f58231", "#f58231")
c3(df3) %>%
c3_color(df3_pal)
在第一个数据帧中,有4行,但是comp_A和comp_B是一样的,comp_C和comp_D是一样的。为了创建颜色矢量,我从色盲调色板中获取第一种颜色#800000,并使用它进行颜色 comp_A。我注意到 comp_B 是相同的,并使其颜色相同,#800000。 comp_C 不同,所以我再次进入cbpal 并获取第二种颜色。最终,我得到了调色板,df1_pal <- c("#800000", "#800000", "#4363d8","#4363d8"),如图所示。
还有两个例子。在所有情况下,数据框将按 y 轴值的降序排列。
如何以编程方式创建这些颜色矢量?
【问题讨论】:
标签: r