#' @title Add Caption to Tracker
#'
#' @param tracker ggtrack tracker object
#' @param caption \code{character} or \code{grob} to add to footer. Text can be
#' \code{html} or \code{md} and is passed directly to \link[gridtext]{richtext_grob}
#' @param position data.frame generated by get \link[ggtrack]{get_positions}
#' @param ... additional options passed through to \link[gridtext]{richtext_grob}
#'
#' @importFrom gridtext richtext_grob
#' @importFrom ggplot2 annotation_custom
#'
#' @return tracker
#' @export
#'
#' @examples
#' \dontrun{
#' make_tracker() %>% add_caption('your caption')
#' }
caption <- function(tracker, caption, position, ...) {
if (is.character(caption)) {
tg <- richtext_grob(caption, x = 0, hjust = 0, name = 'caption', ...)
} else if ('grob' %in% class(caption)) {
tg <- caption
} else {
stop('A caption needs to be either text or a "grob"')
}
# define position
p <- as.list(position[position$order == 'C', ])
tracker +
annotation_custom(tg, xmin = p$xmin, xmax = p$xmax)
}
#' @rdname caption
#' @family add_caption
#' @family gg
#' @family tracker
#' @export
add_caption <- function (tracker, ...) {
UseMethod("add_caption", tracker)
}
#' @rdname caption
#' @family add_caption
#' @family gg
#' @export
add_caption.gg <- function(tracker, caption, position, ...) {
caption(tracker, caption, position, ...)
}
#' @rdname caption
#' @family add_caption
#' @family tracker
#' @export
add_caption.tracker <- function(tracker, caption, ...) {
height_tracker <- tracker$height
position <- tracker$pos
banner <- tracker$track
git <- tracker$git
ts <- tracker$ts
tracker$track <- caption(banner, caption, position, ...)
mtrack <- obj_tracker(tracker, 'caption')
return(mtrack)
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.