#' How to plot your object
#'
#' Access the source code used for plotting.
#'
#' @param x An object.
#' @param ... Arguments passed to or from other methods.
#'
#' @details The plotting-capability of the \pkg{see} package mainly evolve around
#' two functions: \code{\link[=data_plot]{data_plot()}}, which prepares the data from various
#' objects to bring it into shape for plotting, and \code{\link[=data_plot]{plot()}},
#' which takes the data from \code{data_plot()} and creates the ggplot-object.
#' Although ggplot-objects are easily modifiable, it is sometimes necessary to
#' build up a plot from scratch, using the data that should be plotted. This
#' is where \code{how_to_plot()} can help. It simply extracts and polishes the
#' code from the various \code{plot()} methods and prints it to the console.
#' This code can be used as "basis" for building own ggplots.
#'
#' @examples
#' \dontrun{
#' library(bayestestR)
#' results <- hdi(rnorm(1000))
#'
#' how_to_plot(results)
#' }
#' @export
how_to_plot <- function(x, ...) {
UseMethod("how_to_plot")
}
#' @export
how_to_plot.hdi <- function(x, ...) {
cat(.how_to_plode_cleaner("plot.see_hdi"))
}
#' @export
how_to_plot.see_hdi <- how_to_plot.hdi
#' @export
how_to_plot.ci <- function(x, ...) {
cat(.how_to_plode_cleaner("plot.see_ci"))
}
#' @export
how_to_plot.see_ci <- how_to_plot.ci
#' @export
how_to_plot.p_direction <- function(x, ...) {
cat(.how_to_plode_cleaner("plot.see_p_direction"))
}
#' @export
how_to_plot.see_p_direction <- how_to_plot.p_direction
#' @export
how_to_plot.rope <- function(x, ...) {
cat(.how_to_plode_cleaner("plot.see_rope"))
}
#' @export
how_to_plot.see_rope <- how_to_plot.rope
#' @export
how_to_plot.estimate_density <- function(x, ...) {
cat(.how_to_plode_cleaner("plot.see_estimate_density"))
}
#' @export
how_to_plot.see_estimate_density <- how_to_plot.estimate_density
#' @importFrom insight print_color
#' @importFrom utils head tail getAnywhere
#' @keywords internal
.how_to_plode_cleaner <- function(name) {
sourcecode <- utils::getAnywhere(name)
code <- sourcecode$objs[!sourcecode$dups]
code <- as.character(code)
# Split by line
code <- strsplit(code, "\n", fixed = TRUE)[[1]]
# Remove beginning and end of function
code <- utils::tail(utils::head(code, -2), -5)
if (grepl(".remove_intercept", code[1], fixed = TRUE)) {
code <- utils::tail(code, -1)
}
# Replace begining
code <- gsub("p <- x", "data_plot(x)", code, fixed = TRUE)
# Remove .data$
code <- gsub(".data$", "", code, fixed = TRUE)
# Split
code <- gsub("+", "+\n ", code, fixed = TRUE)
code <- gsub("%>%", "%>%\n ", code, fixed = TRUE)
# Remove other non necessary sentences:
code <- gsub('.remove_intercept(x, column = "y", show_intercept) ', "", code, fixed = TRUE)
insight::print_color("# Assuming that the input object is `x`:\n\n", "cyan")
cat(trimws(code))
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.