Изменить цвет группировки с помощью highcharter - PullRequest
1 голос
/ 19 марта 2020

У меня есть барплот с разными категориями, я настроил цвет столбца для каждой категории, но я не знаю, как изменить цвет точки под графиком

Мои данные:

library(highcharter)
library(dplyr)

x = structure(list(stat = c("abandonne_pro", "admissible", "admissible", 
                            "admissible", "non_recu", "refuse", "refuse", "en_cours", 
                            "non_recu"), 
                   annee_recep = structure(c(17532, 17532, 17897, 18262, 17897, 17532, 17897, 17897, 17532), class = "Date"), 
                   nb_stat = c(4L, 57L, 112L, 1L, 2L, 5L, 5L, 1L, 1L)), 
              row.names = c(NA, -9L), 
              class = "data.frame",
              .Names = c("stat", "annee_recep", "nb_stat"))

Добавить переменная цвета:

x = x %>%
  mutate(
    color = case_when(
      stat == 'abandonne_pro' ~ '#87CEEB',
      stat == 'admissible' ~ '#7CFC00',
      stat == 'non_recu' ~ '#FF7F50',
      stat == 'refuse' ~ '#FF0000',
      stat == 'en_cours' ~ '#FFFF00',
      TRUE ~ '#C0C0C0'
    ),
    date = format(annee_recep, format="%Y")
  )

Графика c:

hchart(
  x,
  "column", 
  hcaes(x = annee_recep, y = nb_stat, group = stat, color = color)
) %>% 
  hc_plotOptions(column = list(stacking = "normal"), type = "datetime") %>% 
  hc_xAxis(
    title = list(text = 'Date'),
    type = 'datetime'
  ) %>% 
  hc_yAxis(
    title = list(text = "Nombre de chantier")
  ) %>% 
  hc_add_theme(hc_theme_gridlight())

Выход:

enter image description here

Спасибо за помощь!

1 Ответ

1 голос
/ 19 марта 2020

Простое решение состоит в том, чтобы установить цвета вручную, используя hc_colors() вместо отображения на цветовой эстетике c. Попробуйте это:

library(highcharter)
library(dplyr)
library(tibble)

x <- structure(list(
  stat = c(
    "abandonne_pro", "admissible", "admissible",
    "admissible", "non_recu", "refuse", "refuse", "en_cours",
    "non_recu"
  ),
  annee_recep = structure(c(17532, 17532, 17897, 18262, 17897, 17532, 17897, 17897, 17532), class = "Date"),
  nb_stat = c(4L, 57L, 112L, 1L, 2L, 5L, 5L, 1L, 1L)
),
row.names = c(NA, -9L),
class = "data.frame",
.Names = c("stat", "annee_recep", "nb_stat")
)

x <- x %>%
  mutate(
    color = case_when(
      stat == 'abandonne_pro' ~ '#87CEEB',
      stat == 'admissible' ~ '#7CFC00',
      stat == 'non_recu' ~ '#FF7F50',
      stat == 'refuse' ~ '#FF0000',
      stat == 'en_cours' ~ '#FFFF00',
      TRUE ~ '#C0C0C0'
    ),
    date = format(annee_recep, format="%Y")
  )

# Filter dataset
x <- filter(x, stat != 'en_cours')
# Named color vector
color_vec <- count(x, stat, color) %>% 
  select(stat, color) %>% 
  deframe() %>% 
  unname()

hchart(
  x,
  "column", 
  hcaes(x = annee_recep, y = nb_stat, group = stat)
) %>% 
  hc_plotOptions(column = list(stacking = "normal"), type = "datetime") %>% 
  hc_xAxis(
    title = list(text = 'Date'),
    type = 'datetime'
  ) %>% 
  hc_yAxis(
    title = list(text = "Nombre de chantier")
  ) %>% 
  hc_add_theme(hc_theme_gridlight()) %>% 
  hc_colors(colors = color_vec)

Создано в 2020-03-19 пакетом Представить (v0.3.0)

...