# This file is automatically generated, you probably don't want to edit this
jjtreemapOptions <- if (requireNamespace("jmvcore", quietly=TRUE)) R6::R6Class(
"jjtreemapOptions",
inherit = jmvcore::Options,
public = list(
initialize = function(
group = NULL,
size = NULL,
color = NULL,
aspectRatio = 1.67,
borderWidth = 0.7,
labelLevel1Size = 15,
labelLevel2Size = 12,
labelLevel1Color = "white",
labelLevel2Color = "black",
labelFontFace = "normal",
labelBackground = "transparent",
labelAlignH = "center",
labelAlignV = "center",
labelOverlap = 0.5,
title = "",
subtitle = "",
caption = "", ...) {
super$initialize(
package="ClinicoPath",
name="jjtreemap",
requiresData=TRUE,
...)
private$..group <- jmvcore::OptionVariable$new(
"group",
group,
suggested=list(
"nominal",
"ordinal"),
permitted=list(
"factor"))
private$..size <- jmvcore::OptionVariable$new(
"size",
size,
suggested=list(
"continuous"),
permitted=list(
"numeric"))
private$..color <- jmvcore::OptionVariable$new(
"color",
color,
suggested=list(
"nominal",
"ordinal"),
permitted=list(
"factor"))
private$..aspectRatio <- jmvcore::OptionNumber$new(
"aspectRatio",
aspectRatio,
default=1.67)
private$..borderWidth <- jmvcore::OptionNumber$new(
"borderWidth",
borderWidth,
default=0.7)
private$..labelLevel1Size <- jmvcore::OptionNumber$new(
"labelLevel1Size",
labelLevel1Size,
default=15)
private$..labelLevel2Size <- jmvcore::OptionNumber$new(
"labelLevel2Size",
labelLevel2Size,
default=12)
private$..labelLevel1Color <- jmvcore::OptionString$new(
"labelLevel1Color",
labelLevel1Color,
default="white")
private$..labelLevel2Color <- jmvcore::OptionString$new(
"labelLevel2Color",
labelLevel2Color,
default="black")
private$..labelFontFace <- jmvcore::OptionList$new(
"labelFontFace",
labelFontFace,
options=list(
"normal",
"bold",
"italic",
"bolditalic"),
default="normal")
private$..labelBackground <- jmvcore::OptionString$new(
"labelBackground",
labelBackground,
default="transparent")
private$..labelAlignH <- jmvcore::OptionList$new(
"labelAlignH",
labelAlignH,
options=list(
"left",
"center",
"right"),
default="center")
private$..labelAlignV <- jmvcore::OptionList$new(
"labelAlignV",
labelAlignV,
options=list(
"top",
"center",
"bottom"),
default="center")
private$..labelOverlap <- jmvcore::OptionNumber$new(
"labelOverlap",
labelOverlap,
default=0.5)
private$..title <- jmvcore::OptionString$new(
"title",
title,
default="")
private$..subtitle <- jmvcore::OptionString$new(
"subtitle",
subtitle,
default="")
private$..caption <- jmvcore::OptionString$new(
"caption",
caption,
default="")
self$.addOption(private$..group)
self$.addOption(private$..size)
self$.addOption(private$..color)
self$.addOption(private$..aspectRatio)
self$.addOption(private$..borderWidth)
self$.addOption(private$..labelLevel1Size)
self$.addOption(private$..labelLevel2Size)
self$.addOption(private$..labelLevel1Color)
self$.addOption(private$..labelLevel2Color)
self$.addOption(private$..labelFontFace)
self$.addOption(private$..labelBackground)
self$.addOption(private$..labelAlignH)
self$.addOption(private$..labelAlignV)
self$.addOption(private$..labelOverlap)
self$.addOption(private$..title)
self$.addOption(private$..subtitle)
self$.addOption(private$..caption)
}),
active = list(
group = function() private$..group$value,
size = function() private$..size$value,
color = function() private$..color$value,
aspectRatio = function() private$..aspectRatio$value,
borderWidth = function() private$..borderWidth$value,
labelLevel1Size = function() private$..labelLevel1Size$value,
labelLevel2Size = function() private$..labelLevel2Size$value,
labelLevel1Color = function() private$..labelLevel1Color$value,
labelLevel2Color = function() private$..labelLevel2Color$value,
labelFontFace = function() private$..labelFontFace$value,
labelBackground = function() private$..labelBackground$value,
labelAlignH = function() private$..labelAlignH$value,
labelAlignV = function() private$..labelAlignV$value,
labelOverlap = function() private$..labelOverlap$value,
title = function() private$..title$value,
subtitle = function() private$..subtitle$value,
caption = function() private$..caption$value),
private = list(
..group = NA,
..size = NA,
..color = NA,
..aspectRatio = NA,
..borderWidth = NA,
..labelLevel1Size = NA,
..labelLevel2Size = NA,
..labelLevel1Color = NA,
..labelLevel2Color = NA,
..labelFontFace = NA,
..labelBackground = NA,
..labelAlignH = NA,
..labelAlignV = NA,
..labelOverlap = NA,
..title = NA,
..subtitle = NA,
..caption = NA)
)
jjtreemapResults <- if (requireNamespace("jmvcore", quietly=TRUE)) R6::R6Class(
"jjtreemapResults",
inherit = jmvcore::Group,
active = list(
todo = function() private$.items[["todo"]],
plot = function() private$.items[["plot"]]),
private = list(),
public=list(
initialize=function(options) {
super$initialize(
options=options,
name="",
title="Treemap",
refs=list(
"ggplot2",
"treemap",
"ggfittext",
"dplyr",
"tibble",
"ClinicoPathJamoviModule"),
clearWith=list(
"group",
"size",
"color",
"aspectRatio",
"borderLevel1Width",
"borderLevel2Width",
"borderLevel1Color",
"borderLevel2Color",
"labelLevel1Size",
"labelLevel2Size",
"labelLevel1Color",
"labelLevel2Color",
"labelFontFace",
"labelBackground",
"labelOverlap",
"labelAlignH",
"labelAlignV",
"title",
"subtitle",
"caption"))
self$add(jmvcore::Html$new(
options=options,
name="todo",
title="To Do"))
self$add(jmvcore::Image$new(
options=options,
name="plot",
title="Treemap",
renderFun=".plot",
requiresData=TRUE))}))
jjtreemapBase <- if (requireNamespace("jmvcore", quietly=TRUE)) R6::R6Class(
"jjtreemapBase",
inherit = jmvcore::Analysis,
public = list(
initialize = function(options, data=NULL, datasetId="", analysisId="", revision=0) {
super$initialize(
package = "ClinicoPath",
name = "jjtreemap",
version = c(1,0,0),
options = options,
results = jjtreemapResults$new(options=options),
data = data,
datasetId = datasetId,
analysisId = analysisId,
revision = revision,
pause = NULL,
completeWhenFilled = FALSE,
requiresMissings = FALSE,
weightsSupport = 'auto')
}))
#' Treemap
#'
#' 'Creates treemap visualizations for categorical data'
#'
#'
#' @examples
#' \donttest{
#' # example will be added
#'}
#' @param data The data as a data frame.
#' @param group .
#' @param size .
#' @param color .
#' @param aspectRatio .
#' @param borderWidth .
#' @param labelLevel1Size .
#' @param labelLevel2Size .
#' @param labelLevel1Color .
#' @param labelLevel2Color .
#' @param labelFontFace .
#' @param labelBackground .
#' @param labelAlignH .
#' @param labelAlignV .
#' @param labelOverlap .
#' @param title .
#' @param subtitle .
#' @param caption .
#' @return A results object containing:
#' \tabular{llllll}{
#' \code{results$todo} \tab \tab \tab \tab \tab a html \cr
#' \code{results$plot} \tab \tab \tab \tab \tab an image \cr
#' }
#'
#' @export
jjtreemap <- function(
data,
group,
size,
color,
aspectRatio = 1.67,
borderWidth = 0.7,
labelLevel1Size = 15,
labelLevel2Size = 12,
labelLevel1Color = "white",
labelLevel2Color = "black",
labelFontFace = "normal",
labelBackground = "transparent",
labelAlignH = "center",
labelAlignV = "center",
labelOverlap = 0.5,
title = "",
subtitle = "",
caption = "") {
if ( ! requireNamespace("jmvcore", quietly=TRUE))
stop("jjtreemap requires jmvcore to be installed (restart may be required)")
if ( ! missing(group)) group <- jmvcore::resolveQuo(jmvcore::enquo(group))
if ( ! missing(size)) size <- jmvcore::resolveQuo(jmvcore::enquo(size))
if ( ! missing(color)) color <- jmvcore::resolveQuo(jmvcore::enquo(color))
if (missing(data))
data <- jmvcore::marshalData(
parent.frame(),
`if`( ! missing(group), group, NULL),
`if`( ! missing(size), size, NULL),
`if`( ! missing(color), color, NULL))
for (v in group) if (v %in% names(data)) data[[v]] <- as.factor(data[[v]])
for (v in color) if (v %in% names(data)) data[[v]] <- as.factor(data[[v]])
options <- jjtreemapOptions$new(
group = group,
size = size,
color = color,
aspectRatio = aspectRatio,
borderWidth = borderWidth,
labelLevel1Size = labelLevel1Size,
labelLevel2Size = labelLevel2Size,
labelLevel1Color = labelLevel1Color,
labelLevel2Color = labelLevel2Color,
labelFontFace = labelFontFace,
labelBackground = labelBackground,
labelAlignH = labelAlignH,
labelAlignV = labelAlignV,
labelOverlap = labelOverlap,
title = title,
subtitle = subtitle,
caption = caption)
analysis <- jjtreemapClass$new(
options = options,
data = data)
analysis$run()
analysis$results
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.