Highcharter R堆叠条形图中的多个系列

在浏览了highcharter包文档之后,访问他的网站JBKunst,并查看list.parse2(),我仍然无法解决问题.问题如下:要将多个系列从data.frame绘制成堆叠条形图,系列可以是10到30系列.目前系列已定义如下,但显然必须有一种更简单的方法,例如将列表或熔化的data.frame传递给函数hc_series,类似于ggplot2可以完成的操作.

在带有虚拟数据的代码下面

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))

产生此图表:
enter image description here

在我看来,添加倍数系列的一个好方法是使用hc_add_series_list(你可以使用for循环),它需要一个系列列表(一个系列是例如list(name =“A”,data = mydata $A).

正如你所说,你需要融化/收集数据,你可以使用tidyr包:

mynewdata <- gather(mydata)

然后,您需要按键参数对数据进行分组,以便为​​每个键/系列创建数据.在这里你可以使用dplyr包:

mynewdata2 <- mynewdata %>%
  # we change the key to name to have the label in the legend
  group_by(name = key) %>%  
  # the data in this case is simple, is just .$value column
  do(data = .$value)

此数据框将包含两列,第二列将包含每行的十个值.

现在,您需要在列表中包含此信息.所以我们需要使用List.parse3 instad of list.parse2解析beacuse保留名称,如名称或数据.

series <- list.parse3(mynewdata2)

所以最后改变:

hc_series(list(name="A",data=mydata$A),
    list(name="B",data=mydata$B),
    list(name="C",data=mydata$C))

通过:

hc_add_series_list(series)

希望这很清楚.

本站公众号
   欢迎关注本站公众号,获取更多程序园信息
开发小院