在浏览了 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))
产生这个图表:
最佳答案
我认为添加倍数系列的一个好方法是使用 hc_add_series_list
(oc 你可以使用 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)
希望这很清楚。
关于r - Highcharter R 堆积条形图中的多个系列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38093229/