Highcharts plot multiple series without multiple hc_add_series

Hello everyone,

Most of the time I user highcharter library to plot specific amount of time-series this way:

highchart() %>% 
hc_add_series(name = "DF Column name", data = df$VALUE, color = ... ) %>%
hc_add_series(name = "DF Column name2", data = df$VALUE2, color = ... )

Sometimes however I don't know the amount of columns and their names in data frame - e.g. when the data frame is a result of dcast() function.
I would like the library to plot all of the columns, set series name as column names and assign colors from a default color-order pallette.
It is easily done using dygraphs library where I decide whether I want to specify the series myself or I want the library to do this for me:

toPlotTestData <- xts(testDataResult[,2:4], order.by = testDataResult[, 1], tzone = "GMT")
dygraph(toPlotTestData, main = "Title") 


toPlotTestData <- xts(testDataResult[,2:4], order.by = testDataResult[, 1], tzone = "GMT")
dygraph(toPlotTestData, main = "Title") %>% 
dySeries("COL1", label="COL1", axis = 'y', color = "blue") %>%
dySeries("COL2", label="COL2", axis = 'y', color = "orange")

Is it also possible in highcharter?
Any help appreciated.

You can refer to the link

There are many ways.

  1. hcaes()
  2. hchart() with tidy data.

Thank you for the link! It is a very good article showing how to use Highcharts documentation to create charts in R/Shiny.

It appears that while dygraphs library needs data in "wide" format, highcharter needs melted data ("long" format) to create dynamic number of plots.
Below is the solution I started to use after reading the article:

  • using reshape2::melt function as opposed to tidyr::gather suggested in the article
  • with datetime x axis as opposed to categories

output$plot <- renderHighchart({
      dataMelted <- melt(data, id=c("DAY"), value.name="VALUES", variable.name="PARAMS")
      dataMelted$DAY <- datetime_to_timestamp(dataMelted$DAY)
      hchart(dataMelted, type = 'line', hcaes(y = VALUES, group = PARAMS, x = DAY)) %>% 
        hc_xAxis(type = "datetime") 

If your question's been answered (even by you!), would you mind choosing a solution? It helps other people see which questions still need help, or find solutions if they have similar problems. Here’s how to do it:

This topic was automatically closed 7 days after the last reply. New replies are no longer allowed.

If you have a query related to it or one of the replies, start a new topic and refer back with a link.