Nothing
#' Create a box with a sparkline
#'
#' @param data A \code{data.frame}-like object with at least two columns,
#' first is mapped to x-axis, second to y-axis.
#' @param title Title to display in the box.
#' @param subtitle Subtitle to display in the box.
#' @param color Color of the chart.
#' @param background Background color of the box.
#' @param type Type of chart, currently type supported are :
#' \code{"area"} (default), \code{"line"}, \code{"spline"}, \code{"column"}.
#' @param synchronize Give a common id to charts to synchronize them (tooltip and zoom).
#' @param title_style,subtitle_style A \code{list} of named attributes to style
#' the title / subtitle, possible values are \code{fontSize},
#' \code{fontWeight}, \code{fontFamily}, \code{color}.
#' @param width,height A numeric input in pixels.
#' @param elementId Use an explicit element ID for the widget.
#'
#' @return An \code{apexcharts} \code{htmlwidget} object.
#' @export
#'
#' @note In Shiny use \code{sparkBoxOutput} / \code{renderSparkBox} to render boxes, see example.
#' Boxes have CSS class \code{"apexcharter-spark-box"} if you need more styling.
#'
#' @importFrom htmlwidgets sizingPolicy
#' @importFrom rlang sym
#' @importFrom ggplot2 aes
#'
#' @example examples/spark_box.R
spark_box <- function(data,
title = NULL,
subtitle = NULL,
color = "#2E93fA",
background = "#FFF",
type = c("area", "line", "spline", "column"),
synchronize = NULL,
title_style = NULL,
subtitle_style = NULL,
width = NULL,
height = NULL,
elementId = NULL) {
type <- match.arg(type)
data <- as.data.frame(data)
if (ncol(data) < 2)
stop("'data' must have at least two columns!", call. = FALSE)
x_var <- names(data)[1]
y_var <- names(data)[2]
spark <- apex(
data = data,
aes(x = !!sym(x_var), y = !!sym(y_var)),
type = type,
auto_update = config_update(update_options = TRUE)
)
spark <- ax_chart(
ax = spark,
sparkline = list(enabled = TRUE),
group = synchronize
)
spark <- ax_yaxis(spark, show = FALSE)
spark <- ax_colors(spark, color)
if (!is.null(title)) {
if (is.null(title_style))
title_style <- list(fontSize = "24px")
if (is.null(title_style$fontSize))
title_style$fontSize <- "24px"
spark <- ax_title(
ax = spark,
text = title,
style = title_style
)
}
if (!is.null(subtitle)) {
if (is.null(subtitle_style))
subtitle_style <- list(fontSize = "14px")
if (is.null(subtitle_style$fontSize))
subtitle_style$fontSize <- "14px"
spark <- ax_subtitle(
ax = spark,
text = subtitle,
style = subtitle_style
)
}
spark$x$sparkbox <- list(
color = color, background = background
)
spark$sizingPolicy <- htmlwidgets::sizingPolicy(
defaultWidth = "100%",
defaultHeight = "160px",
viewer.defaultHeight = "160px",
viewer.defaultWidth = "100%",
viewer.fill = FALSE,
knitr.figure = FALSE,
knitr.defaultWidth = "100%",
knitr.defaultHeight = "160px",
browser.fill = FALSE,
viewer.suppress = FALSE,
browser.external = TRUE,
padding = 15
)
return(spark)
}
#' @rdname apexcharter-shiny
#' @export
sparkBoxOutput <- function(outputId, width = "100%", height = "160px") { # nocov start
htmlwidgets::shinyWidgetOutput(outputId, "apexcharter", width, height, package = "apexcharter")
} # nocov end
#' @rdname apexcharter-shiny
#' @export
renderSparkBox <- function(expr, env = parent.frame(), quoted = FALSE) { # nocov start
if (!quoted) { expr <- substitute(expr) } # force quoted
htmlwidgets::shinyRenderWidget(expr, apexchartOutput, env, quoted = TRUE)
} # nocov end
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.