dygraph Highlight在有光泽的回调中,自定义图例不会显示为第一点

时间:2018-08-06 21:35:13

标签: javascript r shiny dygraphs

[根据原始问题编辑]

在一个闪亮的应用程序中(我的第一个),我使用了及时投资组合在答案中建议的代码(从2015年开始),以自定义笔形时间序列图中的图例。原始问题在这里:

How can I get tooltips showing in dygraphs without annotation

timelyportfolio的代码满足我的要求:我的数据是票房收据的时间序列,我想在图例中日期和收据下方显示标题。我对JavaScript的知识很初级,而且我不太了解及时投资组合的代码是如何工作的。因此,我按原样使用了代码,只是在最后更改了代码以使用标题矢量,并添加了换行符和斜体。这是相关代码:

# Build dygraph plot    
   operastimeseries <- reactive({
     dygraph(operas_xts(), 
             main = "Opera Receipts, Burgtheater, 14 Apr 1789 to 7 Mar 1791",
             ylab = "Receipts (kr)") %>% 
       dySeries("kr", label = "Receipts (kr)") %>% 
       dyOptions(drawPoints=TRUE, pointSize=2) %>%
       # Format date in Legend consistently. Add padding at extremes of
       # range so that points are easier to see
       dyAxis("x", valueFormatter = "function(ms) {
                                return new Date(ms).toDateString()}",
              rangePad=5
              )  %>% 
       dyEvent(x=as.Date("1790-02-20"), label="Death of Joseph II") %>% 
       # dyHighlight(highlightCircleSize = 5) %>% 
       dyLegend(show="auto") %>% 
       dyRangeSelector() %>%
       # Code to add title to legend adapted from StackOverflow 27671576,
       # answer by timelyportfolio
       dyCallbacks(
         highlightCallback = sprintf(
           'function(e, x, pts, row) {
           var customLegend = %s
           // should get our htmlwidget
           var legendel = e.target.parentNode.parentNode
           .querySelectorAll(".dygraph-legend")[0];

           // should get our htmlwidget
           legendel.innerHTML = legendel.innerHTML + "<br>" + 
           "<em>" + customLegend[row] + "</em>";}',  # supply a vector
           jsonlite::toJSON(titles())
         ))
     }) # End reactive dygraph

该回调工作正常,但似乎与dyHighlight()有关的问题除外,该问题在上面的代码中已注释掉。当代码中包含dyHighlight()时,将鼠标悬停在标题上的 first 点上,会在图例中短暂显示,但几乎立即消失。对于随后的点(在预期的情况下在图例中显示标题),不会发生这种情况。但是,如果将光标移到图表区域之外,然后再移回该模式,则重复该模式:鼠标悬停的第一个点的标题消失,但随后的点正常工作。

有人知道为什么会这样吗,以及如何修复代码,以便鼠标悬停时即使在第一个点上,该点的标题也能显示在图例中?

我希望能够使用dyHighlights()在用户将鼠标悬停在上方时使该点的扩大更加明显,因为在图形显示时highlightCircleSize = 3的默认设置确实不够用是密集的,就像用户第一次看到它时一样。

有光泽的实时应用程序(无dyHighlight())位于https://dexteredge.shinyapps.io/Burgtheater/

记录表位于“系列”标签中。

代码在这里:

https://github.com/dexedge/burgtheater/blob/master/app.R

0 个答案:

没有答案