Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Box Plot

Signature

sp.build_boxplot(
    title: str,
    category_labels: list[str],
    values: list[float],
    *,
    width: int = 900,
    height: int = 480,
    x_label: str = "",
    y_label: str = "",
    color_hex: int = 0x6366F1,
    palette: list[int] | None = None,
    background: str | None = None,
    gridlines: bool = True,
    no_x_axis: bool = False,
    no_y_axis: bool = False,
) -> Chart

Aliases: sp.boxplot, sp.box_plot


Description

Box-and-whisker plot showing statistical distribution per category. Each box displays Q1, median, Q3, and IQR whiskers.

values is a flat list concatenating all category samples; the lengths must be equal across categories (same number of values per category).


Parameters

ParameterTypeDefaultDescription
titlestrrequiredChart title
category_labelslist[str]requiredOne label per box
valueslist[float]requiredFlat list of all samples
color_hexint0x6366F1Single box fill color
palettelist[int] | NoneNonePer-category colors
widthint900Canvas width in pixels
heightint480Canvas height in pixels
x_labelstr""X-axis label
y_labelstr""Y-axis label
gridlinesboolTrueShow horizontal gridlines

Returns

Chart


Examples

Test scores by class

import seraplot as sp
import random
n = 50
groups = {
    "Class A": [random.gauss(72, 10) for _ in range(n)],
    "Class B": [random.gauss(68, 15) for _ in range(n)],
    "Class C": [random.gauss(80, 8)  for _ in range(n)],
}
labels = list(groups.keys())
values = [v for g in groups.values() for v in g]
chart = sp.build_boxplot(
    "Test Score Distribution by Class",
    category_labels=labels,
    values=values,
    y_label="Score",
    gridlines=True,
)
const sp = require('seraplot');
import random
const n = 50
const groups = {
    "Class A": [random.gauss(72, 10) for _ in range(n)],
    "Class B": [random.gauss(68, 15) for _ in range(n)],
    "Class C": [random.gauss(80, 8)  for _ in range(n)],
}
const labels = list(groups.keys())
const values = [v for g in groups.values() for v in g]
const chart = sp.build_boxplot("Test Score Distribution by Class",
labels,
{
    values: values,
    y_label: "Score",
    gridlines: true
})
import * as sp from 'seraplot';
import random
const n: number = 50
const groups = {
    "Class A": [random.gauss(72, 10) for _ in range(n)],
    "Class B": [random.gauss(68, 15) for _ in range(n)],
    "Class C": [random.gauss(80, 8)  for _ in range(n)],
}
const labels = list(groups.keys())
const values: number[] = [v for g in groups.values() for v in g]
const chart = sp.build_boxplot("Test Score Distribution by Class",
labels,
{
    values: values,
    y_label: "Score",
    gridlines: true
})
▶ Live Preview

See also

Signature

sp.build_boxplot(
    title: str,
    category_labels: list[str],
    values: list[float],
    *,
    width: int = 900,
    height: int = 480,
    x_label: str = "",
    y_label: str = "",
    color_hex: int = 0x6366F1,
    palette: list[int] | None = None,
    background: str | None = None,
    gridlines: bool = True,
    no_x_axis: bool = False,
    no_y_axis: bool = False,
) -> Chart

Aliases: sp.boxplot, sp.box_plot


Description

Boite à moustaches montrant la distribution statistique par catégorie. Chaque boîte affiche Q1, la médiane, Q3 et les moustaches IQR.

values est une liste plate concaténant tous les échantillons de toutes les catégories (même nombre de valeurs par catégorie).


Paramètres

ParamètreTypeDéfautDescription
titlestrrequisTitre du graphique
category_labelslist[str]requisUne étiquette par boîte
valueslist[float]requisListe plate de tous les échantillons
color_hexint0x6366F1Couleur de remplissage unique
palettelist[int] | NoneNoneCouleurs par catégorie
widthint900Largeur du canvas en pixels
heightint480Hauteur du canvas en pixels
x_labelstr""Étiquette de l'axe X
y_labelstr""Étiquette de l'axe Y
gridlinesboolTrueAfficher les lignes de grille horizontales

Retourne

Chart


Exemples

Résultats de tests par classe

import seraplot as sp
import random

n = 50
groupes = {
    "Classe A": [random.gauss(72, 10) for _ in range(n)],
    "Classe B": [random.gauss(68, 15) for _ in range(n)],
    "Classe C": [random.gauss(80, 8)  for _ in range(n)],
}

labels = list(groupes.keys())
values = [v for g in groupes.values() for v in g]

chart = sp.build_boxplot(
    "Distribution des scores par classe",
    category_labels=labels,
    values=values,
    y_label="Score",
    gridlines=True,
)

Voir aussi