2016-06-29 54 views
4

經歷了高輪包裹文檔,訪問JBKunst他的網站並查看list.parse2()後,我仍然無法解決問題。問題如下:從一個data.frame到多個條形圖的圖表,系列可以是10-30系列的任何地方。現在系列已經被定義如下,但顯然必須有一個更簡單的方法,例如將一個列表或融化的data.frame傳遞給函數hc_series,類似於ggplot2可以完成的功能。Highcharter R堆疊條形圖中的多個系列

下面以虛擬數據

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

+0

如何在X軸上向A B C添加額外的標籤/標籤以指示這些A,B,C代表什麼? –

回答

6

一個很好的方法來增加多個系列在我看來是使用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 instar list.parse2解析保存名稱,如namedata

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) 

希望這是顯而易見的。

+0

hc_add_series_list()在github上的開發版本中? –

+0

是的。我將在下週更新CRAN版本。 – jbkunst

+0

不再有效。我認爲,這個解決方案描述了將整潔的數據集轉換爲數據框,然後轉換爲列表,以便導入爲hc_add_series()。這將是很好的一步。 – Nettle

相關問題