After going through the highcharter package documentation, visiting JBKunst his website, and looking into list.parse2(), I still can not solve the problem. Problem is as follows: Looking to chart multiple series from a data.frame into a stacked barchart, series can be anywhere from 10 - 30 series. For now the series have been defined as below, but clearly there has to be an easier way, for example passing a list or melted data.frame to the function hc_series similar as what can be done with ggplot2.
Below the code with dummy data
mydata <- data.frame(A=runif(1:10),
B=runif(1:10),
C=runif(1:10))
highchart() %>%
hc_chart(type = "column") %>%
hc_title(text = "MyGraph") %>%
hc_yAxis(title = list(text = "Weights")) %>%
hc_plotOptions(column = list(
dataLabels = list(enabled = FALSE),
stacking = "normal",
enableMouseTracking = FALSE)
) %>%
hc_series(list(name="A",data=mydata$A),
list(name="B",data=mydata$B),
list(name="C",data=mydata$C))
a good approach to add multiples series in my opinion is use
hc_add_series_list
(oc you can use a for loop) which need a list of series (a series is for examplelist(name="A",data=mydata$A)
.As you said, you need to melt/gather the data, you can use
tidyr
package:Then you'll need to group the data by
key
argument to create the data for eachkey
/series. Here you can usedplyr
package:This data frame will contain two columns and the 2nd colum will contain the ten values for each row.
Now you need this information in a list. So we need to parse using
list.parse3
instad oflist.parse2
beacuse preserve names likename
ordata
.So finally change:
by:
Hope this is clear.