es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Colores personalizados en el gráfico de barras de highcharter en R

Estoy intentando producir un gráfico de barras con una leyenda y colores personalizados con el paquete highcharter.

Primero los datos:

dta <- structure(list(antibiotic = c("Ceftriaxone", "Ampicillin", "Gentamicin", "Meropenem", "Cefotaxime", "Cloxacillin", "Metronidazole", "Vancomycin", "Ceftazidime", "Penicillin V", "Amoxicillin", "Azithromycin", "Cefixime", "Clindamycin", "Doxycycline", "Moxifloxacin"), 
category = structure(c(1L, 2L, 2L, 1L, 1L, 2L, 2L, 1L, 1L, 2L, 2L, 1L, 1L, 2L, 2L, 1L), 
                     .Label = c("Watch", "Access", "Reserve", "Unknown"), class = "factor"), 
n = c(148L, 92L, 44L, 30L, 13L, 12L, 7L, 3L, 2L, 2L, 1L, 1L, 1L, 1L, 1L, 1L)), 
class = c("tbl_df", "tbl", "data.frame"), row.names = c(NA, -16L))

Primer intento:

library(highcharter)
cols <- c("#2c3e50", "#f39c12")

dta %>%
  hchart(type = "bar", hcaes(x = "antibiotic", y = "n", group = "category"), color = cols) %>%
  hc_yAxis(title = "", stackLabels = list(enabled = TRUE)) %>%
  hc_xAxis(title = "") %>%
  hc_tooltip(headerFormat = "",
             pointFormat = "{point.n} pacientes han tomado {point.antibiotic}") %>%
  hc_plotOptions(series = list(stacking = "normal"))

Los colores y la leyenda son los esperados, pero el resultado ordena los elementos primero por category, mientras que me gustaría tenerlos ordenados por n.

He intentado:

dta %>%
  hchart(type = "bar", hcaes(x = "antibiotic", y = "n", color = "category")) %>%
  hc_yAxis(title = "", stackLabels = list(enabled = TRUE)) %>%
  hc_xAxis(title = "") %>%
  hc_tooltip(headerFormat = "",
             pointFormat = "{point.n} pacientes han tomado {point.antibiotic}") %>%
  hc_plotOptions(series = list(stacking = "normal"))

Ahora el ordenamiento es perfecto, pero la leyenda ha desaparecido y no puedo tener colores personalizados. He intentado agregar una columna de colores al marco de datos y jugar con hc_colors().

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para producir un gráfico de barras con una leyenda y colores personalizados utilizando el paquete highcharter, puede combinar los elementos de los dos intentos anteriores. Primero, agregue una columna de colores al marco de datos:

    cols <- c("#2c3e50", "#f39c12")
    dta$color <- ifelse(dta$category == "Watch", cols[1], cols[2])
    

    Luego, trace el gráfico con color como parámetro y use hc_colors() para asignar los colores personalizados a la leyenda:

    dta %>%
      hchart(type = "bar",
             hcaes(x = "antibiotic", y = "n", group = "category", color = "color")) %>%
      hc_yAxis(title = "", stackLabels = list(enabled = TRUE)) %>%
      hc_xAxis(title = "") %>%
      hc_tooltip(headerFormat = "",
                 pointFormat = "{point.n} pacientes han tomado {point.antibiotic}") %>%
      hc_plotOptions(series = list(stacking = "normal")) %>%
      hc_colors(cols)
    

    Esto debería darle un gráfico de barras con una leyenda y colores personalizados, ordenados por n. Los colores de la leyenda se asignan en función de la columna color en el marco de datos.

Comments are closed.