R/legend.R

Defines functions dyLegend

Documented in dyLegend

#' dygraph legend
#'
#' Configure options for the dygraph series legend.
#'
#' @param dygraph Dygraph to configure legend options for.
#' @param show When to display the legend. Specify "always" to always show the
#'   legend. Specify "onmouseover" to only display it when a user mouses over
#'   the chart. Specify "follow" to have the legend show as overlay to the chart
#'   which follows the mouse. The default behavior is "auto", which results in
#'   "always" when more than one series is plotted and "onmouseover" when only a
#'   single series is plotted.
#' @param width Width (in pixels) of the div which shows the legend.
#' @param showZeroValues Show zero value labels in the legend.
#' @param labelsDiv Show data labels in an external div, rather than on the
#'   graph. This value should be a div element id.
#' @param labelsSeparateLines Put a <br/> between lines in the label string.
#'   Often used in conjunction with \code{labelsDiv}.
#' @param hideOnMouseOut Whether to hide the legend when the mouse leaves the
#'   chart area. This option applies when \code{show} is set to "onmouseover".
#'   Note that this also affects the hiding of the \code{\link{dyHighlight}} on
#'   mouse out.
#'
#' @return A dygraph with customized legend options
#'
#' @examples
#' library(dygraphs)
#'
#' dygraph(nhtemp, main = "New Haven Temperatures") %>%
#'   dySeries("V1", label = "Temperature (F)") %>%
#'   dyLegend(show = "always", hideOnMouseOut = FALSE)
#' @note See the
#'   \href{https://rstudio.github.io/dygraphs/gallery-plot-labels.html}{online
#'   documentation} for additional details and examples.
#'
#' @export
dyLegend <- function(dygraph,
                     show = c("auto", "always", "onmouseover", "follow", "never"),
                     width = 250,
                     showZeroValues = TRUE,
                     labelsDiv = NULL,
                     labelsSeparateLines = FALSE,
                     hideOnMouseOut = TRUE) {
  legend <- list()
  legend$legend <- match.arg(show)
  if (legend$legend == "never") {
    legend$legend <- NULL
    legend$showLabelsOnHighlight <- FALSE
  }
  legend$labelsDivWidth <- width
  legend$labelsShowZeroValues <- showZeroValues
  legend$labelsDiv <- labelsDiv
  legend$labelsSeparateLines <- labelsSeparateLines
  legend$hideOverlayOnMouseOut <- hideOnMouseOut

  # merge legend
  dygraph$x$attrs <- mergeLists(dygraph$x$attrs, legend)

  # return modified dygraph
  dygraph
}
rstudio/dygraphs documentation built on March 17, 2023, 10:48 a.m.