Nothing
#' @title Plots for Hierarchical Clustering Learners
#'
#' @description
#' Visualizations for hierarchical clusters.
#' The argument `type` controls what kind of plot is drawn.
#' Possible choices are:
#'
#' * `"dend"` (default): Dendrograms using \CRANpkg{ggdendro} package.
#' * `"scree"`: Scree plot that shows the number of possible clusters on the x-axis and the height on the y-axis.
#'
#' @param object ([mlr3cluster::LearnerClustAgnes] | [mlr3cluster::LearnerClustDiana] | [mlr3cluster::LearnerClustHclust]).
#' @param task ([mlr3::Task])\cr
#' Optionally, pass the task to add labels of observations to a `hclust` dendrogram.
#' Labels are set via the row names of the task.
#' @template param_type
#' @template param_theme
#' @param theme_dendro (`logical(1)`)\cr
#' If `TRUE` (default), the special dendrogram theme from \CRANpkg{ggdendro} package is used in plot `"dend"`.
#' Set to `FALSE` to use the theme passed in `theme`.
#' @param ... (ignored).
#'
#' @return [ggplot2::ggplot()].
#'
#' @export
#' @examples
#' if (requireNamespace("mlr3")) {
#' library(mlr3)
#' library(mlr3cluster)
#' library(mlr3viz)
#'
#' task = tsk("usarrests")
#'
#' # agnes clustering
#' learner = lrn("clust.agnes")
#' learner$train(task)
#' autoplot(learner)
#'
#' # diana clustering
#' learner = lrn("clust.diana")
#' learner$train(task)
#' autoplot(learner)
#'
#' # hclust clustering
#' learner = lrn("clust.hclust")
#' learner$train(task)
#' autoplot(learner, type = "scree")
#' }
autoplot.LearnerClustHierarchical = function(object, type = "dend", task = NULL, theme = theme_minimal(), theme_dendro = TRUE, ...) { # nolint
assert_string(type)
if (is.null(object$model)) {
stopf("Learner '%s' must be trained first", object$id)
}
if (!("hierarchical" %in% object$properties)) {
stopf("Learner '%s' must be hierarchical", object$id)
}
switch(type,
"dend" = {
require_namespaces("ggdendro")
if (!is.null(task) && !is.null(task$row_names)) {
object$model$labels = task$row_names$row_name[match(object$model$order, task$row_names$row_id)]
}
ggdendro::ggdendrogram(as.dendrogram(object$model), theme_dendro = theme_dendro, ...) +
if (!theme_dendro) theme else geom_blank()
},
"scree" = {
data = data.table(Height = object$model$height, Clusters = seq(length(object$model$height), 1))
ggplot(data,
mapping = aes(x = data$Clusters, y = data$Height)) +
geom_line(color = viridis::viridis(1, begin = 0.5)) +
geom_point(
size = 3,
color = viridis::viridis(1, begin = 0.5),
alpha = 0.8) +
xlab("Clusters") +
ylab("Height") +
theme
}
)
}
#' @export
autoplot.LearnerClustAgnes = autoplot.LearnerClustHierarchical
#' @export
autoplot.LearnerClustDiana = autoplot.LearnerClustHierarchical
#' @export
autoplot.LearnerClustHclust = autoplot.LearnerClustHierarchical
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.