Javascript 用于R/S的dygraphs包中的系列突出显示图例

Javascript 用于R/S的dygraphs包中的系列突出显示图例,javascript,css,r,shiny,dygraphs,Javascript,Css,R,Shiny,Dygraphs,我正在R中编写一个闪亮的应用程序,它使用动态图软件包 该应用程序具有一个交互式绘图功能,可使用dyHighlight()函数突出显示所选系列。但是,由于数据涉及1000列,因此图例将显示1000个系列 下面是一个只有2列的最小代码示例: ui <- fluidPage( # This CSS code should solve the problem, but somehow does not. # To test, replace CSS in tags$style(...)

我正在R中编写一个闪亮的应用程序,它使用动态图软件包

该应用程序具有一个交互式绘图功能,可使用
dyHighlight()
函数突出显示所选系列。但是,由于数据涉及1000列,因此图例将显示1000个系列

下面是一个只有2列的最小代码示例:

ui <- fluidPage(

  # This CSS code should solve the problem, but somehow does not.
  # To test, replace CSS in tags$style(...) with this code
  #.dygraph-legend  { display: none; }
  #.dygraph-legend .highlight { display: inline; }

  # CSS to highlight selected series in legend.
  # Does not solve problem, but is best alternative for now.
  tags$style("
              .highlight {
               border: 2px solid black;
               background-color: #B0B0B0;
              }

             "), 

  sidebarLayout(

    sidebarPanel(),

    mainPanel(dygraphOutput("plot"))

  )

)

server <- function(input, output) {

  set.seed(123)
  data <- matrix(rnorm(12), ncol = 2)
  data <- ts(data)

  # Workaround for what might be a bug
  # Reference: https://stackoverflow.com/questions/28305610/use-dygraph-for-r-to-plot-xts-time-series-by-year-only
  data <- cbind(as.xts(data[,1]), as.xts(data[,2]))

  colnames(data) <- c("Series 1", "Series 2")
  #print(data) # Uncomment to view data frame

  output$plot <- renderDygraph({

    dygraph(data) %>%

      # Highlighting series
      dyHighlight(data, 
                  highlightCircleSize = 2, 
                  highlightSeriesBackgroundAlpha = .5, 
                  highlightSeriesOpts = list(strokeWidth = 2))

  })

}

shinyApp(ui = ui, server = server)

ui这应该让您开始:

图例具有.dygraph图例类。使用highlightSeriesOpts时,所选系列“将获得一个.highlight类。这可用于仅显示图例中的单个系列

因此,您必须创建CSS文件并将其添加到图形中:

这应该可以工作,但由于某种原因,
。动态曲线图图例
正在接管,并且没有显示图例

 .dygraph-legend  { display: none; }

.highlight {
  display: inline;
}
替代性:

.dygraph-legend  { display: all; }

.highlight {
  display: inline;
  background-color: #B0B0B0;
}
将其另存为*.css文件:

dygraph(data)%>% dyHighlight() %>% dyCSS("path to css")
这并不能解决问题,但会为所选系列添加一个亮点:

您尝试用可复制示例解决问题是有用的。您应该有一个timeseries对象,您的数据不是,请提供相关数据。非常感谢您的帮助,JavK。建议的CSS代码运行良好。(它现在被纳入OP)但正如你所说,不幸的是,它并没有解决问题。奇怪的是.dygraph图例{display:none;}覆盖了.highlight{display:inline;},即使在使用之后!重要信息。问题已解决:)。显然,需要span
才能使其工作(参见timelyportfolio的答案:)。