在浏览了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))
答案 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.parse2
个name
保存名称data
或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)
由:
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
希望这很清楚。