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

Scatter 3D

Signature

sp.build_scatter3d_chart(
    title: str,
    x: list[float],
    y: list[float],
    z: list[float],
    *,
    color_values: list[float] | None = None,
    color_labels: list[str] | None = None,
    series_names: list[str] | None = None,
    bg_color: str = "#1a1a2e",
    width: int = 900,
    height: int = 600,
    x_label: str = "X",
    y_label: str = "Y",
    z_label: str = "Z",
    hover_json: str | None = None,
    palette: list[int] | None = None,
) -> Chart

Aliases: sp.scatter3d


Description

GPU-accelerated 3D scatter plot rendered via WebGL. Handles millions of points at interactive frame rates.

Use color_values for a continuous color scale, or color_labels for categorical coloring.


Parameters

ParameterTypeDefaultDescription
titlestrrequiredChart title
xlist[float]requiredX coordinates
ylist[float]requiredY coordinates
zlist[float]requiredZ coordinates
color_valueslist[float] | NoneNoneContinuous colormap values
color_labelslist[str] | NoneNoneCategorical color group labels
series_nameslist[str] | NoneNoneSeries legend names
bg_colorstr"#1a1a2e"Canvas background color
widthint900Canvas width
heightint600Canvas height
x_labelstr"X"X-axis label
y_labelstr"Y"Y-axis label
z_labelstr"Z"Z-axis label
hover_jsonstr | NoneNoneCustom hover JSON
palettelist[int] | NoneNoneCustom color palette

Returns

Chart


Performance

The renderer uses a single gl.drawArrays(POINTS, …) call per frame. Tested at 10 million points at 60 fps on a mid-range GPU.


Examples

3D scatter with categorical colors

import seraplot as sp
import random
n = 1000
x = [random.gauss(0, 1) for _ in range(n)]
y = [random.gauss(0, 1) for _ in range(n)]
z = [random.gauss(0, 1) for _ in range(n)]
groups = [random.choice(["A", "B", "C"]) for _ in range(n)]
chart = sp.build_scatter3d_chart(
    "3D Point Cloud",
    x_values=x, y_values=y, z_values=z,
    color_labels=groups,
    x_label="X", y_label="Y", z_label="Z",
)
const sp = require('seraplot');
import random
const n = 1000
const x = [random.gauss(0, 1) for _ in range(n)]
const y = [random.gauss(0, 1) for _ in range(n)]
const z = [random.gauss(0, 1) for _ in range(n)]
const groups = [random.choice(["A", "B", "C"]) for _ in range(n)]
const chart = sp.build_scatter3d_chart("3D Point Cloud",
x,
y,
{
    z_values: z,
    color_labels: groups,
    x_label: "X",
    y_label: "Y",
    z_label: "Z"
})
import * as sp from 'seraplot';
import random
const n: number = 1000
const x: number[] = [random.gauss(0, 1) for _ in range(n)]
const y: number[] = [random.gauss(0, 1) for _ in range(n)]
const z: number[] = [random.gauss(0, 1) for _ in range(n)]
const groups: string[] = [random.choice(["A", "B", "C"]) for _ in range(n)]
const chart = sp.build_scatter3d_chart("3D Point Cloud",
x,
y,
{
    z_values: z,
    color_labels: groups,
    x_label: "X",
    y_label: "Y",
    z_label: "Z"
})
▶ Live Preview

See also

Signature

sp.build_scatter3d_chart(
    title: str,
    x: list[float],
    y: list[float],
    z: list[float],
    *,
    color_values: list[float] | None = None,
    color_labels: list[str] | None = None,
    series_names: list[str] | None = None,
    bg_color: str = "#1a1a2e",
    width: int = 900,
    height: int = 600,
    x_label: str = "X",
    y_label: str = "Y",
    z_label: str = "Z",
    hover_json: str | None = None,
    palette: list[int] | None = None,
) -> Chart

Aliases: sp.scatter3d


Description

Nuage de points 3D accéléré GPU via WebGL. Gère des millions de points à des fréquences d'images interactives.

Utilisez color_values pour une échelle de couleur continue, ou color_labels pour un coloriage catégoriel.


Paramètres

ParamètreTypeDéfautDescription
titlestrrequisTitre du graphique
xlist[float]requisCoordonnées X
ylist[float]requisCoordonnées Y
zlist[float]requisCoordonnées Z
color_valueslist[float] | NoneNoneValeurs de colormap continues
color_labelslist[str] | NoneNoneGroupes de couleur catégoriels
series_nameslist[str] | NoneNoneNoms des séries pour la légende
bg_colorstr"#1a1a2e"Couleur de fond
widthint900Largeur du canvas
heightint600Hauteur du canvas
x_labelstr"X"Étiquette de l'axe X
y_labelstr"Y"Étiquette de l'axe Y
z_labelstr"Z"Étiquette de l'axe Z
hover_jsonstr | NoneNoneJSON d'infobulle personnalisée
palettelist[int] | NoneNonePalette de couleurs

Retourne

Chart


Performance

Le moteur de rendu utilise un seul appel gl.drawArrays(POINTS, …) par frame. Testé avec 10 millions de points à 60 fps sur un GPU milieu de gamme.


Exemples

Nuage 3D avec couleurs catégorielles

import seraplot as sp
import random
n = 1000
x = [random.gauss(0, 1) for _ in range(n)]
y = [random.gauss(0, 1) for _ in range(n)]
z = [random.gauss(0, 1) for _ in range(n)]
groupes = [random.choice(["A", "B", "C"]) for _ in range(n)]
chart = sp.build_scatter3d_chart(
    "Nuage 3D",
    x_values=x, y_values=y, z_values=z,
    color_labels=groupes,
    x_label="X", y_label="Y", z_label="Z",
)
const sp = require('seraplot');
const n = 1000;
const x = Array.from({length: n}, () => Math.random() * 6 - 3);
const y = Array.from({length: n}, () => Math.random() * 6 - 3);
const z = Array.from({length: n}, () => Math.random() * 6 - 3);
const groupes = Array.from({length: n}, () => ["A","B","C"][Math.floor(Math.random()*3)]);
const chart = sp.build_scatter3d_chart("Nuage 3D", x, y, {
    z_values: z,
    color_labels: groupes,
    x_label: "X", y_label: "Y", z_label: "Z"
});
import * as sp from 'seraplot';
const n: number = 1000;
const x: number[] = Array.from({length: n}, () => Math.random() * 6 - 3);
const y: number[] = Array.from({length: n}, () => Math.random() * 6 - 3);
const z: number[] = Array.from({length: n}, () => Math.random() * 6 - 3);
const groupes: string[] = Array.from({length: n}, () => ["A","B","C"][Math.floor(Math.random()*3)]);
const chart = sp.build_scatter3d_chart("Nuage 3D", x, y, {
    z_values: z,
    color_labels: groupes,
    x_label: "X", y_label: "Y", z_label: "Z"
});
▶ Aperçu en direct

Voir aussi