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

时间:2016-06-29 07:39:19

标签: r highcharts

在浏览了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

1 个答案:

答案 0 :(得分:7)

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

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

mynewdata <- gather(mydata)

然后,您需要按key参数对数据进行分组,以便为​​每个key /系列创建数据。在这里,您可以使用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 list.parse2name保存名称dataseries <- 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)

由:

means


Out[25]: 
                              Total         DL         DM
Mouse Genotype Intensity                                 
455   cre      s          15.114886  13.626841  16.602930
               w          41.419970  33.916706  48.923234

554   wt       s          19.348266  13.747603  24.948928
               w          41.563015  37.336228  45.789802

希望这很清楚。