% Generated by roxygen2: do not edit by hand
% Please edit documentation in R/api-plotting-extras.R
\name{plot_threshold_ladder}
\alias{plot_threshold_ladder}
\title{Plot RSM/PCM threshold ladders with disorder highlighting}
\usage{
plot_threshold_ladder(
  fit,
  highlight_disorder = TRUE,
  preset = c("standard", "publication", "compact", "monochrome"),
  draw = TRUE
)
}
\arguments{
\item{fit}{An \code{mfrm_fit} from \code{\link[=fit_mfrm]{fit_mfrm()}}.}

\item{highlight_disorder}{Logical. When \code{TRUE} (default), draw
disordered segments with the preset's \code{fail} colour and add a
subtitle counting the disordered groups.}

\item{preset}{Visual preset (\code{"standard"}, \code{"publication"}, \code{"compact"},
or \code{"monochrome"}).}

\item{draw}{If \code{TRUE}, draw with base graphics.}
}
\value{
An \code{mfrm_plot_data} object with a \code{data} slot containing
columns \code{Group}, \code{Step}, \code{Threshold}, \code{Disordered} for each ladder
row.
}
\description{
Renders the Rasch-Andrich threshold structure as a vertical ladder per
step-facet level. Each tick is a \code{tau_k}; lines connecting adjacent
thresholds are coloured to make disordered crossings (\verb{tau_\{k+1\} < tau_k}) visually obvious. For RSM there is one ladder; for PCM (and
bounded GPCM) there is one ladder per \code{step_facet} level.
}
\section{Interpreting output}{

Within each ladder, thresholds should ascend monotonically. A
disordered crossing (highlighted in the fail colour) suggests that
the corresponding category is rarely the most likely response over
any logit interval, and is a common trigger for category-collapsing
decisions.
}

\examples{
toy <- load_mfrmr_data("example_core")
fit <- fit_mfrm(toy, "Person", c("Rater", "Criterion"), "Score",
                method = "JML", maxit = 30)
p <- plot_threshold_ladder(fit, draw = FALSE)
head(p$data$data)
}
\seealso{
\code{\link[=category_structure_report]{category_structure_report()}}, \code{\link[=category_curves_report]{category_curves_report()}},
\code{\link[=plot.mfrm_fit]{plot.mfrm_fit()}} (\code{type = "ccc"}).
}
