#' A function to plot panels with common x- and y- axes
#'
#' This function is used to create a composite figure.
#'
#' @param location
#' Location of the panel.
#' `'topleft'`: removes x-axis title, x-axis ticklabel, y-axis title.
#' `'topright'`: removes x-axis title, x-axis ticklabel, y-axis title, y-axis ticklabel.
#' `'bottomleft'`: removes x-axis title, y-axis title.
#' `'bottomright'`: removes x-axis title, y-axis title, y-axis ticklabel.
#' `'topcenter'`: removes x-axis title, x-axis ticklabel, y-axis title, y-axis ticklabel.
#' `'bottomcenter'`: removes x-axis title, y-axis title, y-axis ticklabel.
#' `'single'`: keeps all ticks but removes title
#' `'centerleft'` : removes some ticks and titles
#' `'centerright'` : removes some ticks and titles
#' `'center'`: removes everything
#'
#' @param hmargin
#' The amount of height of blank space between subplots. It sets the size of the empty space (i.e., margin) between panels. T
#' he default is set to 1, which should reduce the empty space (right and left side of each panel)
#' between the panels.
#'
#' @param wmargin
#' The amount of width of blank space between subplots. It sets the size of the empty space (i.e., margin) between panels. T
#' he default is set to 1, which should reduce the empty space (right and left side of each panel)
#' between the panels.
#'
#' @export
#' @return
#' Returns a ggplot2 output with ticks removed.
#'
#' @examples
#' library(ggplot2)
#' library(smplot2)
#' set.seed(1) # generate random data
#' day1 <- rnorm(16, 2, 1)
#' day2 <- rnorm(16, 5, 1)
#' Subject <- rep(paste0("S", seq(1:16)), 2)
#' Data <- data.frame(Value = matrix(c(day1, day2), ncol = 1))
#' Day <- rep(c("Day 1", "Day 2"), each = length(day1))
#' df <- cbind(Subject, Data, Day)
#'
#' # with aesthetic defaults of smplot
#' ggplot(data = df, mapping = aes(x = Day, y = Value, color = Day)) +
#' sm_bar() +
#' scale_color_manual(values = sm_color("blue", "orange")) +
#' sm_common_axis("bottomleft")
#'
sm_common_axis <- function(location, hmargin = 1, wmargin = 1) {
# 9+1 locations
if (location == "topleft") {
ggplot2::theme(axis.title.x = element_blank()) +
ggplot2::theme(axis.text.x.bottom = element_blank()) +
ggplot2::theme(axis.title.y = element_blank()) +
ggplot2::theme(axis.text.y.right = element_blank()) +
theme(plot.margin = margin(r = wmargin, t = hmargin, l = wmargin, b = hmargin))
} else if (location == "topright") {
ggplot2::theme(axis.title.x = element_blank()) +
ggplot2::theme(axis.text.x.bottom = element_blank()) +
ggplot2::theme(axis.title.y = element_blank()) +
ggplot2::theme(axis.text.y.left = element_blank()) +
ggplot2::theme(plot.margin = margin(r = wmargin, t = hmargin, l = wmargin, b = hmargin))
} else if (location == "bottomleft") {
ggplot2::theme(axis.title.x = element_blank()) +
ggplot2::theme(axis.text.x.top = element_blank()) +
ggplot2::theme(axis.title.y = element_blank()) +
ggplot2::theme(axis.text.y.right = element_blank()) +
ggplot2::theme(plot.margin = margin(r = wmargin, t = hmargin, l = wmargin, b = hmargin))
} else if (location == "bottomright") {
ggplot2::theme(axis.title.x = element_blank()) +
ggplot2::theme(axis.text.x.top = element_blank()) +
ggplot2::theme(axis.text.y.left = element_blank()) +
ggplot2::theme(axis.title.y = element_blank()) +
ggplot2::theme(plot.margin = margin(r = wmargin, t = hmargin, l = wmargin, b = hmargin))
} else if (location == "topcenter") {
ggplot2::theme(axis.title.x = element_blank()) +
ggplot2::theme(axis.text.x.bottom = element_blank()) +
ggplot2::theme(axis.text.y = element_blank()) +
ggplot2::theme(axis.title.y = element_blank()) +
ggplot2::theme(plot.margin = margin(r = wmargin, t = hmargin, l = wmargin, b = hmargin))
} else if (location == "bottomcenter") {
ggplot2::theme(axis.title.x = element_blank()) +
ggplot2::theme(axis.text.x.top = element_blank()) +
ggplot2::theme(axis.text.y = element_blank()) +
ggplot2::theme(axis.title.y = element_blank()) +
ggplot2::theme(plot.margin = margin(r = wmargin, t = hmargin, l = wmargin, b = hmargin))
} else if (location == "center") {
ggplot2::theme(axis.title.x = element_blank()) +
ggplot2::theme(axis.text.x = element_blank()) +
ggplot2::theme(axis.text.y = element_blank()) +
ggplot2::theme(axis.title.y = element_blank()) +
ggplot2::theme(plot.margin = margin(r = wmargin, t = hmargin, l = wmargin, b = hmargin))
} else if (location == "centerleft") {
ggplot2::theme(axis.title.x = element_blank()) +
ggplot2::theme(axis.text.x = element_blank()) +
ggplot2::theme(axis.text.y.right = element_blank()) +
ggplot2::theme(axis.title.y = element_blank()) +
ggplot2::theme(plot.margin = margin(r = wmargin, t = hmargin, l = wmargin, b = hmargin))
} else if (location == "centerright") {
ggplot2::theme(axis.title.x = element_blank()) +
ggplot2::theme(axis.text.x = element_blank()) +
ggplot2::theme(axis.text.y.left = element_blank()) +
ggplot2::theme(axis.title.y = element_blank()) +
ggplot2::theme(plot.margin = margin(r = wmargin, t = hmargin, l = wmargin, b = hmargin))
} else if (location == "single") {
ggplot2::theme(axis.title.x = element_blank()) +
ggplot2::theme(axis.title.y = element_blank()) +
ggplot2::theme(plot.margin = margin(r = wmargin, t = hmargin, l = wmargin, b = hmargin))
} else if (location == "bottomleft2x") {
ggplot2::theme(axis.title.x = element_blank()) +
ggplot2::theme(axis.title.y = element_blank()) +
ggplot2::theme(axis.text.y.right = element_blank()) +
ggplot2::theme(plot.margin = margin(r = wmargin, t = hmargin, l = wmargin, b = hmargin))
} else if (location == "bottomcenter2x") {
ggplot2::theme(axis.title.x = element_blank()) +
ggplot2::theme(axis.text.y = element_blank()) +
ggplot2::theme(axis.title.y = element_blank()) +
ggplot2::theme(plot.margin = margin(r = wmargin, t = hmargin, l = wmargin, b = hmargin))
} else if (location == "bottomright2x") {
ggplot2::theme(axis.title.x = element_blank()) +
ggplot2::theme(axis.text.y.left = element_blank()) +
ggplot2::theme(axis.title.y = element_blank()) +
ggplot2::theme(plot.margin = margin(r = wmargin, t = hmargin, l = wmargin, b = hmargin))
} else {
stop("Wrong input. Please check again.")
}
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.