2016-12-03 38 views
0

我想在我的flexdashboard上使用的高跳圖懸停上顯示其他數據系列。我明白要做到這一點的方法是使用highcharts的'formatter'函數。我已經能夠將附加系列存儲在我的系列數據中的一個隨機變量中,並使用格式化函數調用它,但是我可以在我的highcharts圖中獲得每個條的完整列表。我需要每個點的個人價值觀。R HIGHCHARTER - 如何在高圖懸停上顯示其他系列值?

下面的代碼:

highchart() %>% 
    hc_chart(type = "bar") %>% 
    hc_title(text = "Bottom Five Suppliers (Overall)") %>% 
    hc_xAxis(categories = suppliers$Supplier[20:24], tickInterval = 1) %>% 
    hc_yAxis(tickInterval = 1) %>% hc_add_series(data = suppliers$x[20:24], 
      name = "Overall Supplier Score (Weighted)", resp = suppliers$respondents[20:24]) %>% 
hc_tooltip(valueDecimals = 2, useHTML = TRUE, formatter = JS("function() 
{return this.series.options.resp;}")) 
%>% hc_exporting(enabled = TRUE) %>% hc_plotOptions(
series = list(
    boderWidth = 0, 
    dataLabels = list(enabled = TRUE) 
)) 

這是結果: image](http://imgur.com/a/rgcJm)[![Highchart for additional series

正如你可以看到,上懸停在圖表上來的數據大於x或y軸不同。但是,它將顯示所有5個欄的完整數據,而不是顯示每個欄的一個值。

我知道我需要編寫一個JavaScript函數來匹配其餘數據框的值,但我不知道該怎麼做(因爲我沒有太多經驗或對JS的知識,可悲)。

如果我使用一個在x或y軸上使用的系列,那麼它可以正常工作(使用this.x或this.y),但是如果沒有this.series,則使用存儲在隨機變量中的附加系列不起作用。 options.seriesname,然後它也返回整個系列。

編輯

這裏重現這個例子的代碼:

library (highcharter) 
library (dplyr) 
Suppliers= data.frame(Supplier = c('one','two','three','four','five'), 
Value = c(1,2,3,4,5), respondents= c(5,1,4,12,5), 
Category = c('cat1','cat2','cat3','cat4','cat5')) 

highchart() %>% 
hc_chart(type = "bar") %>% 
hc_title(text = "Bottom Five Suppliers (Overall)") %>% 
hc_xAxis(categories = Suppliers$Supplier, tickInterval = 1) %>% 
hc_yAxis(tickInterval = 1) %>% hc_add_series(data = Suppliers$Value, 
     name = "Overall Supplier Score (Weighted)", resp = Suppliers$respondents) %>% 
hc_tooltip(valueDecimals = 2, useHTML = TRUE, formatter = JS("function() 
{return this.series.options.resp;}")) 
%>% hc_plotOptions(
series = list(
    boderWidth = 0, 
    dataLabels = list(enabled = TRUE) 
)) 

當你將鼠標懸停在生產highchart,它顯示了完整系列的受訪者,而不是它顯示單個值。

+0

如果您可以生成一個可重複的例子將更容易幫助你。 – jbkunst

+0

@jbkunst謝謝你的迴應!我已經更新了這個問題以包含一個可重複的例子。 – NinjaElvis

回答

0

好吧,我嘗試了一些簡單的東西,它似乎工作。我只是將x軸的點作爲我打電話的系列的索引。

library (highcharter) 
    library (dplyr) 
    Suppliers= data.frame(Supplier = c('one','two','three','four','five'), 
    Value = c(1,2,3,4,5), respondents= c(5,1,4,12,5), 
    Category = c('cat1','cat2','cat3','cat4','cat5')) 

    highchart() %>% 
    hc_chart(type = "bar") %>% 
    hc_title(text = "Bottom Five Suppliers (Overall)") %>% 
    hc_xAxis(categories = Suppliers$Supplier, tickInterval = 1) %>% 
    hc_yAxis(tickInterval = 1) %>% hc_add_series(data = Suppliers$Value, 
    name = "Overall Supplier Score (Weighted)", resp = Suppliers$respondents) %>% 
    hc_tooltip(valueDecimals = 2, useHTML = TRUE, formatter = JS("function() 
     {return this.series.options.resp[this.point.x];}")) 
     %>% hc_plotOptions(
     series = list(
     boderWidth = 0, 
     dataLabels = list(enabled = TRUE) 
    ))