sp.facet() is not a chart family of its own — it is the framework's generic small-multiples
mechanism, the SeraPlot equivalent of seaborn's FacetGrid. It takes the name of any existing
2D chart family (family=), splits every data array in the call by a facet_by group key, and
calls that family's own builder once per group, laying the results out in a grid. Every current
and future chart family gets faceting for free — there is no per-chart code, no separate variant
enum, and no duplicated geometry: services/plot/statistical/facet/mod.rs dispatches straight to
the target family's real build_* function (histogram::build_histogram,
line::build_line, joint::build_joint, …), so any **kwargs valid for that family
(colorscale=, bins=, variant=, …) is simply forwarded through unfiltered.
Only arguments whose array length matches facet_by get split; everything else (scalars like
bins=, variant=, colorscale=) is copied to every cell unchanged. cols= sets the grid's
column count, cell_width= / cell_height= size each panel.
Currently wired families: area, bar, boxplot, bubble, bullet, candlestick, dumbbell,
eventplot, funnel, gantt, gauge, heatmap, hexbin, histogram, icicle, joint,
kde, line, lollipop, parallel, pie, radar, ridgeline, scatter, slope, splom,
stackplot, sunburst, treemap, violin, waterfall, wordcloud — see
facet::dispatch() for the exact match table.
Any array field accepted by the target family= (values, labels, x, y, …), plus
facet_by (list[str]) — the group label for each row, same length as the arrays being split.
Pair grid (KDE diagonal, paired point plots, dot-plot matrix) — splom(variant="density") or splom(variant="basic"): SPLOM is SeraPlot's scatterplot-matrix family and already covers the pairwise-comparison layout these seaborn examples show.
Radial facets — facet(family="bar", facet_by=...): SeraPlot doesn't have a native polar/rose histogram variant yet, so this reproduces the faceting technique with a regular bar chart per facet rather than a pixel-perfect polar match.
Facetted time series — same mechanism as the Faceted Lineplot recipe below; swap in a time-ordered labels= array.
Facets a bivariate joint(variant="histogram2d") panel by a third variable — matches seaborn's three_variable_histogram example, combining the facet mechanism with the [`joint`](joint.md) family's `histogram2d` alias.
sp.facet() n'est pas une famille de graphique en soi — c'est le mécanisme générique de petits
multiples du framework, l'équivalent SeraPlot de FacetGrid de seaborn. Il prend le nom de
n'importe quelle famille 2D existante (family=), découpe chaque tableau de données de l'appel
selon une clé de groupe facet_by, et appelle le builder de cette famille une fois par groupe, en
disposant les résultats dans une grille. Chaque famille actuelle et future obtient le facettage
gratuitement — aucun code par graphique, aucune énumération de variante séparée, aucune géométrie
dupliquée : services/plot/statistical/facet/mod.rs appelle directement le vrai build_* de la
famille cible (histogram::build_histogram, line::build_line, joint::build_joint, …), donc
tout **kwargs valide pour cette famille (colorscale=, bins=, variant=, …) est simplement
transmis tel quel.
Seuls les arguments dont la longueur de tableau correspond à facet_by sont découpés ; le reste
(scalaires comme bins=, variant=, colorscale=) est copié tel quel dans chaque cellule.
cols= fixe le nombre de colonnes de la grille, cell_width= / cell_height= dimensionnent
chaque panneau.
Familles déjà câblées : area, bar, boxplot, bubble, bullet, candlestick, dumbbell,
eventplot, funnel, gantt, gauge, heatmap, hexbin, histogram, icicle, joint,
kde, line, lollipop, parallel, pie, radar, ridgeline, scatter, slope, splom,
stackplot, sunburst, treemap, violin, waterfall, wordcloud — voir facet::dispatch()
pour la table de correspondance exacte.
Tout champ tableau accepté par la famille family= cible (values, labels, x, y, …), plus
facet_by (list[str]) — l'étiquette de groupe de chaque ligne, de même longueur que les
tableaux à découper.
Pair grid (diagonale KDE, point plots appairés, matrice de dot-plots) — splom(variant="density") ou splom(variant="basic") : SPLOM est la famille matrice de nuages de points de SeraPlot et couvre déjà la disposition en comparaison par paires de ces exemples.
Facettes radiales — facet(family="bar", facet_by=...) : SeraPlot n'a pas encore de variante native d'histogramme polaire/rose des vents, donc ceci reproduit la technique de facettage avec un bar chart classique par facette plutôt qu'une correspondance polaire exacte.
Séries temporelles facettées — même mécanisme que la recette Faceted Lineplot ci-dessous ; remplacez labels= par un tableau ordonné dans le temps.
Un panneau de courbe par groupe — correspond aux exemples faceted_lineplot / timeseries_facets de seaborn (utilisez un labels= ordonné dans le temps pour le second).
Facette un panneau bivarié joint(variant="histogram2d") par une troisième variable — correspond à l'exemple three_variable_histogram de seaborn, combinant le mécanisme de facettage avec l'alias histogram2d de la famille [`joint`](joint.md).