Variable: scatter3dAttributes
ts
const scatter3dAttributes: ObjectNode<{
connectgaps: Attr<boolean, {
description: "Connect lines across missing (`null`, `NaN`) points instead of breaking them.";
dflt: false;
editType: readonly (
| "calc"
| "calcIfAutorange"
| "crossTraceCalc"
| "layout"
| "ticks"
| "plot"
| "style"
| "colorbars"
| "legend"
| "modebar"
| "camera"
| "none")[];
}>;
error_x: ObjectNode<Record<string, SchemaNode>>;
error_y: ObjectNode<Record<string, SchemaNode>>;
error_z: ObjectNode<Record<string, SchemaNode>>;
line: ObjectNode<{
autocolorscale: AttrSpec<boolean, boolean | undefined>;
cauto: AttrSpec<boolean, boolean | undefined>;
cmax: AttrSpec<number, number | undefined>;
cmid: AttrSpec<number, number | undefined>;
cmin: AttrSpec<number, number | undefined>;
color: Attr<string | readonly string[], {
arrayOk: true;
description: "Line color, or one per point (numbers map through `line.colorscale`; the color is interpolated along each segment). Defaults to the marker color (when a single color) or the colorway.";
editType: "style";
}>;
coloraxis: AttrSpec<string, string | undefined>;
colorbar: ObjectNode<{
bgcolor: Attr<string, {
description: "Background of the box.";
dflt: "rgba(0,0,0,0)";
}>;
bordercolor: Attr<string, {
description: "Border color of the colorbar box.";
dflt: "#444";
}>;
borderwidth: Attr<number, {
description: "Border width of the box, px.";
dflt: 0;
min: 0;
}>;
dtick: AttrSpec<unknown, unknown>;
exponentformat: Attr<"none" | "e" | "E" | "power" | "SI" | "B", {
description: "How large and small numbers are written: `none` (1000000), `e` (1e+6), `E` (1E+6), `power` (1×10⁶), `SI` (1M), `B` (like SI but 1B for 10⁹).";
dflt: "B";
editType: readonly (
| "calc"
| "calcIfAutorange"
| "crossTraceCalc"
| "layout"
| "ticks"
| "plot"
| "style"
| "colorbars"
| "legend"
| "modebar"
| "camera"
| "none")[];
values: readonly ["none", "e", "E", "power", "SI", "B"];
}>;
len: Attr<number, {
description: "Length of the colorbar along its axis, padding included (`ypad` / `xpad`).";
dflt: 1;
min: 0;
}>;
lenmode: Attr<"fraction" | "pixels", {
description: "Unit of `len`: px, or a fraction of the plot height (`v`) / width (`h`).";
dflt: "fraction";
values: readonly ["fraction", "pixels"];
}>;
minexponent: Attr<number, {
description: "Smallest decimal exponent written in exponent form (`SI`/`B` and exponent formats); smaller magnitudes are written out in full.";
dflt: 3;
editType: readonly (
| "calc"
| "calcIfAutorange"
| "crossTraceCalc"
| "layout"
| "ticks"
| "plot"
| "style"
| "colorbars"
| "legend"
| "modebar"
| "camera"
| "none")[];
min: 0;
}>;
nticks: Attr<number, {
description: "Maximum number of ticks for `tickmode: auto` (the actual number may be lower so steps stay round). 0 picks it from the axis length.";
dflt: 0;
editType: "ticks";
min: 0;
}>;
orientation: Attr<"v" | "h", {
description: "Vertical bar (`v`, beside the plot) or horizontal bar (`h`, above or below).";
dflt: "v";
values: readonly ["h", "v"];
}>;
outlinecolor: Attr<string, {
description: "Color of the outline around the bar.";
dflt: "#444";
}>;
outlinewidth: Attr<number, {
description: "Outline width, px.";
dflt: 1;
min: 0;
}>;
separatethousands: Attr<boolean, {
description: "Always separate thousands (1,000). By default only numbers with 5 or more integer digits are separated.";
dflt: false;
editType: readonly (
| "calc"
| "calcIfAutorange"
| "crossTraceCalc"
| "layout"
| "ticks"
| "plot"
| "style"
| "colorbars"
| "legend"
| "modebar"
| "camera"
| "none")[];
}>;
showexponent: Attr<"none" | "all" | "first" | "last", {
description: "Which tick labels show the exponent.";
dflt: "all";
editType: readonly (
| "calc"
| "calcIfAutorange"
| "crossTraceCalc"
| "layout"
| "ticks"
| "plot"
| "style"
| "colorbars"
| "legend"
| "modebar"
| "camera"
| "none")[];
values: readonly ["all", "first", "last", "none"];
}>;
showticklabels: Attr<boolean, {
description: "Show tick labels.";
dflt: true;
editType: readonly (
| "calc"
| "calcIfAutorange"
| "crossTraceCalc"
| "layout"
| "ticks"
| "plot"
| "style"
| "colorbars"
| "legend"
| "modebar"
| "camera"
| "none")[];
}>;
showtickprefix: Attr<"none" | "all" | "first" | "last", {
description: "Which tick labels get `tickprefix`.";
dflt: "all";
editType: readonly (
| "calc"
| "calcIfAutorange"
| "crossTraceCalc"
| "layout"
| "ticks"
| "plot"
| "style"
| "colorbars"
| "legend"
| "modebar"
| "camera"
| "none")[];
values: readonly ["all", "first", "last", "none"];
}>;
showticksuffix: Attr<"none" | "all" | "first" | "last", {
description: "Which tick labels get `ticksuffix`.";
dflt: "all";
editType: readonly (
| "calc"
| "calcIfAutorange"
| "crossTraceCalc"
| "layout"
| "ticks"
| "plot"
| "style"
| "colorbars"
| "legend"
| "modebar"
| "camera"
| "none")[];
values: readonly ["all", "first", "last", "none"];
}>;
thickness: Attr<number, {
description: "Thickness of the color bar.";
dflt: 30;
min: 0;
}>;
thicknessmode: Attr<"fraction" | "pixels", {
description: "Unit of `thickness`: px, or a fraction of the plot width (`v`) / height (`h`).";
dflt: "pixels";
values: readonly ["fraction", "pixels"];
}>;
tick0: AttrSpec<unknown, unknown>;
tickangle: Attr<number | "auto", {
description: "Tick-label rotation in degrees. `auto` rotates x-axis labels by the first `autotickangles` entry that avoids overlap.";
dflt: "auto";
editType: readonly (
| "calc"
| "calcIfAutorange"
| "crossTraceCalc"
| "layout"
| "ticks"
| "plot"
| "style"
| "colorbars"
| "legend"
| "modebar"
| "camera"
| "none")[];
extras: readonly ["auto"];
}>;
tickcolor: Attr<string, {
description: "Tick color. Defaults to `color`.";
editType: "ticks";
}>;
tickfont: ObjectNode<{
color: Attr<string, {
description: "Text color.";
editType: "style";
}>;
family: Attr<string, {
description: "CSS font-family list. The renderer uses the first family it can load and falls back through the list.";
noBlank: true;
strict: true;
}>;
lineposition: Attr<
| "none"
| "under"
| "over"
| "through"
| `under+${(...)}`
| `over+${(...)}`
| `through+${(...)}`, {
description: "Text decoration: `under`, `over` and/or `through` joined with `+` (e.g. `under+over`), or `none`.";
extras: readonly [...];
flags: readonly [..., ..., ...];
}>;
shadow: Attr<string, {
description: "CSS `text-shadow` behind the text (`2px 2px 3px black`; only the first shadow is drawn), `none`, or `auto` for a thin halo in the contrast color of the text.";
}>;
size: Attr<number, {
description: "Font size in CSS pixels.";
min: 1;
}>;
style: Attr<"normal" | "italic", {
description: "Font style.";
values: readonly [..., ...];
}>;
textcase: Attr<"normal" | "word caps" | "upper" | "lower", {
description: "Letter case transform: `upper`, `lower`, `word caps` (first letter of each word), or `normal`.";
values: readonly [..., ..., ..., ...];
}>;
variant: Attr<
| "normal"
| "small-caps"
| "all-small-caps"
| "all-petite-caps"
| "petite-caps"
| "unicase", {
description: "Capitals variant (CSS `font-variant-caps`). The SDF text renderer approximates small and petite caps with uppercase letters at a reduced size.";
values: readonly [..., ..., ..., ..., ..., ...];
}>;
weight: Attr<number | "normal" | "bold", {
description: "Font weight: a CSS numeric weight (1–1000), `normal` or `bold`.";
extras: readonly [..., ...];
max: 1000;
min: 1;
}>;
}>;
tickformat: Attr<string, {
description: "Tick-label format: a d3-format specifier for numbers (`.2f`, `~s`, `$,`) or a d3-time-format specifier for dates (`%b %Y`), plus `%{n}f` for `n` digits of fractional seconds and `%h` for the half year. Empty picks a format automatically.";
dflt: "";
editType: readonly (
| "calc"
| "calcIfAutorange"
| "crossTraceCalc"
| "layout"
| "ticks"
| "plot"
| "style"
| "colorbars"
| "legend"
| "modebar"
| "camera"
| "none")[];
}>;
ticklabeloverflow: Attr<"allow" | "hide past div" | "hide past domain", {
description: "Hide labels past the figure or past the bar. Defaults to `hide past domain` for inside labels, else `hide past div`.";
values: readonly ["allow", "hide past div", "hide past domain"];
}>;
ticklabelposition: Attr<
| "outside"
| "inside"
| "outside top"
| "inside top"
| "outside left"
| "inside left"
| "outside right"
| "inside right"
| "outside bottom"
| "inside bottom", {
description: "Tick labels outside the bar (away from it) or inside (over it); `top`/`bottom` (`v`) or `left`/`right` (`h`) move them beside their tick.";
dflt: "outside";
values: readonly ["outside", "inside", "outside top", "inside top", "outside bottom", "inside bottom", "outside left", "inside left", "outside right", "inside right"];
}>;
ticklabelstep: Attr<number, {
description: "Label every n-th tick only (`tickmode` `auto` and `linear`).";
dflt: 1;
editType: "ticks";
min: 1;
}>;
ticklen: Attr<number, {
description: "Tick length in px.";
dflt: 5;
editType: readonly (
| "calc"
| "calcIfAutorange"
| "crossTraceCalc"
| "layout"
| "ticks"
| "plot"
| "style"
| "colorbars"
| "legend"
| "modebar"
| "camera"
| "none")[];
min: 0;
}>;
tickmode: Attr<"auto" | "linear" | "array" | "sync", {
description: "`auto` picks up to `nticks` round ticks; `linear` places ticks from `tick0` every `dtick`; `array` uses `tickvals`/`ticktext`; `sync` aligns with the overlaid axis (reserved; behaves as `auto`). Defaults to `array` when `tickvals` is set, `linear` when `dtick` is set, else `auto`.";
editType: "ticks";
values: readonly ["auto", "linear", "array", "sync"];
}>;
tickprefix: Attr<string, {
description: "Text before each tick label.";
dflt: "";
editType: readonly (
| "calc"
| "calcIfAutorange"
| "crossTraceCalc"
| "layout"
| "ticks"
| "plot"
| "style"
| "colorbars"
| "legend"
| "modebar"
| "camera"
| "none")[];
}>;
ticks: Attr<"" | "outside" | "inside", {
description: "Draw tick marks outside or inside the plot area, or not at all (`''`).";
dflt: "";
editType: EditType;
values: readonly ["outside", "inside", ""];
}>;
ticksuffix: Attr<string, {
description: "Text after each tick label.";
dflt: "";
editType: readonly (
| "calc"
| "calcIfAutorange"
| "crossTraceCalc"
| "layout"
| "ticks"
| "plot"
| "style"
| "colorbars"
| "legend"
| "modebar"
| "camera"
| "none")[];
}>;
ticktext: AttrSpec<DataArray, DataArray | undefined>;
tickvals: AttrSpec<DataArray, DataArray | undefined>;
tickwidth: Attr<number, {
description: "Tick width in px.";
dflt: 1;
editType: "ticks";
min: 0;
}>;
title: ObjectNode<{
font: ObjectNode<{
color: Attr<..., ...>;
family: Attr<..., ...>;
lineposition: Attr<..., ...>;
shadow: Attr<..., ...>;
size: Attr<..., ...>;
style: Attr<..., ...>;
textcase: Attr<..., ...>;
variant: Attr<..., ...>;
weight: Attr<..., ...>;
}>;
side: Attr<"right" | "top" | "bottom", {
description: "Where the title goes relative to the bar. Defaults to `top` (`v`) or `right` (`h`).";
values: readonly [..., ..., ...];
}>;
text: Attr<string, {
description: "Colorbar title.";
dflt: "";
}>;
}>;
x: Attr<number, {
description: "Horizontal position (`xref` fraction). Defaults to 1.02 (`v`, paper), 1 (`v`, container) or 0.5 (`h`).";
}>;
xanchor: Attr<"left" | "center" | "right", {
description: "Which side of the colorbar sits at `x`. Defaults to `left` (`v`, paper), `right` (`v`, container) or `center` (`h`).";
values: readonly ["left", "center", "right"];
}>;
xpad: Attr<number, {
description: "Horizontal padding, px.";
dflt: 10;
min: 0;
}>;
xref: Attr<"container" | "paper", {
description: "Reference of `x`: the plot area (`paper`) or the whole figure.";
dflt: "paper";
values: readonly ["container", "paper"];
}>;
y: Attr<number, {
description: "Vertical position (`yref` fraction). Defaults to 0.5 (`v`), 1.02 (`h`, paper) or 1 (`h`, container).";
}>;
yanchor: Attr<"top" | "middle" | "bottom", {
description: "Which side of the colorbar sits at `y`. Defaults to `middle` (`v`), `bottom` (`h`, paper) or `top` (`h`, container).";
values: readonly ["top", "middle", "bottom"];
}>;
ypad: Attr<number, {
description: "Vertical padding, px.";
dflt: 10;
min: 0;
}>;
yref: Attr<"container" | "paper", {
description: "Reference of `y`: the plot area (`paper`) or the whole figure.";
dflt: "paper";
values: readonly ["container", "paper"];
}>;
}>;
colorscale: AttrSpec<ColorScale, ColorScale | undefined>;
dash: Attr<"solid" | "dash" | "dot" | "dashdot" | "longdash" | "longdashdot", {
description: "Dash style, measured in CSS px along the drawn line (`render: \"screen\"` only).";
dflt: "solid";
editType: "style";
values: readonly ["dash", "dashdot", "dot", "longdash", "longdashdot", "solid"];
}>;
lighting: ObjectNode<Record<string, any>>;
lightposition: ObjectNode<{
x: Attr<number, {
description: `${string} of the light, in clip space (moves with the view; ±1 is the edge of the view, 1e5 far away).`;
dflt: number;
editType: "calc";
max: 100000;
min: -100000;
}>;
y: Attr<number, {
description: `${string} of the light, in clip space (moves with the view; ±1 is the edge of the view, 1e5 far away).`;
dflt: number;
editType: "calc";
max: 100000;
min: -100000;
}>;
z: Attr<number, {
description: `${string} of the light, in clip space (moves with the view; ±1 is the edge of the view, 1e5 far away).`;
dflt: number;
editType: "calc";
max: 100000;
min: -100000;
}>;
}>;
material: ObjectNode<{
castshadow: Attr<boolean, {
description: "Cast shadows from the lights of `scene.lighting` with `castshadow` (onto three.js material types and the ground plane).";
dflt: false;
editType: "calc";
}>;
clearcoat: Attr<number, {
description: string;
editType: "calc";
max: 1;
min: 0;
}>;
clearcoatroughness: Attr<number, {
description: string;
editType: "calc";
max: 1;
min: 0;
}>;
emissive: Attr<string, {
description: string;
editType: "calc";
}>;
emissiveintensity: Attr<number, {
description: string;
editType: "calc";
min: 0;
}>;
envmapintensity: Attr<number, {
description: string;
editType: "calc";
min: 0;
}>;
ior: Attr<number, {
description: "Index of refraction (`physical`). Default 1.5.";
editType: "calc";
max: 2.333;
min: 1;
}>;
iridescence: Attr<number, {
description: string;
editType: "calc";
max: 1;
min: 0;
}>;
matcap: Attr<string, {
description: "URL of a matcap image (`matcap`): the surface takes its colors from it by normal direction.";
editType: "calc";
}>;
metalness: Attr<number, {
description: string;
editType: "calc";
max: 1;
min: 0;
}>;
receiveshadow: Attr<boolean, {
description: "Receive shadows (three.js material types only).";
dflt: false;
editType: "calc";
}>;
reflectivity: Attr<number, {
description: string;
editType: "calc";
max: 1;
min: 0;
}>;
roughness: Attr<number, {
description: string;
editType: "calc";
max: 1;
min: 0;
}>;
sheen: Attr<number, {
description: string;
editType: "calc";
max: 1;
min: 0;
}>;
sheencolor: Attr<string, {
description: string;
editType: "calc";
}>;
sheenroughness: Attr<number, {
description: string;
editType: "calc";
max: 1;
min: 0;
}>;
shininess: Attr<number, {
description: string;
editType: "calc";
min: 0;
}>;
specular: Attr<string, {
description: string;
editType: "calc";
}>;
steps: Attr<number, {
description: "Number of shading bands (`toon`).";
dflt: 3;
editType: "calc";
max: 16;
min: 2;
}>;
thickness: Attr<number, {
description: string;
editType: "calc";
min: 0;
}>;
transmission: Attr<number, {
description: string;
editType: "calc";
max: 1;
min: 0;
}>;
type: Attr<
| "flat"
| "plotly"
| "basic"
| "lambert"
| "phong"
| "standard"
| "physical"
| "toon"
| "matcap", {
description: "How surfaces are shaded. `plotly`: Plotly's lighting model. `flat`: unlit, colors as given. `basic`, `lambert`, `phong`, `standard`, `physical`, `toon`, `matcap`: the three.js material of that name, lit by the lights of the scene (`scene.lighting`) or of the 2.5D view.";
dflt: "plotly";
editType: "calc";
values: readonly ["plotly", "flat", "basic", "lambert", "phong", "standard", "physical", "toon", "matcap"];
}>;
}>;
radius: Attr<number, {
description: "Tube radius (`render: 'tube'`) as a fraction of the longest side of the scene's axis box (so tubes stay round whatever the axis scales).";
dflt: 0.01;
editType: "calc";
min: 0;
}>;
render: Attr<"screen" | "tube" | "ribbon", {
description: "How the line is drawn (a Holochart extension): `'screen'` — Plotly's look, a flat band `width` CSS px wide at every depth; `'tube'` — a lit tube of `radius` around the line; `'ribbon'` — a lit strip swept along an axis (`ribbon`), e.g. waterfall plots of spectra. Tubes and ribbons are meshes: they scale with the view like the data, and take `lighting`, `lightposition` and `material`.";
dflt: "screen";
editType: "calc";
values: readonly ["screen", "tube", "ribbon"];
}>;
reversescale: AttrSpec<boolean, boolean>;
ribbon: ObjectNode<{
axis: Attr<"x" | "y" | "z", {
description: "The axis the ribbon extends along (on both sides of the line).";
dflt: "y";
editType: "calc";
values: readonly ["x", "y", "z"];
}>;
width: Attr<number, {
description: "Ribbon width along `axis`, in that axis' units (a category is 1, dates in ms). Default: a twentieth of the axis range.";
editType: "calc";
min: 0;
}>;
}>;
showscale: AttrSpec<boolean, boolean>;
width: Attr<number, {
description: "Line width in CSS px, at every depth (screen-space lines).";
dflt: 2;
editType: "style";
min: 0;
}>;
}>;
marker: ObjectNode<{
autocolorscale: AttrSpec<boolean, boolean | undefined>;
cauto: AttrSpec<boolean, boolean | undefined>;
cmax: AttrSpec<number, number | undefined>;
cmid: AttrSpec<number, number | undefined>;
cmin: AttrSpec<number, number | undefined>;
color: Attr<string | readonly string[], {
animatable: true;
arrayOk: true;
description: "Marker fill color, one CSS color per point, or numbers mapped through `colorscale`. Defaults to the colorway.";
editType: "style";
}>;
coloraxis: AttrSpec<string, string | undefined>;
colorbar: ObjectNode<{
bgcolor: Attr<string, {
description: "Background of the box.";
dflt: "rgba(0,0,0,0)";
}>;
bordercolor: Attr<string, {
description: "Border color of the colorbar box.";
dflt: "#444";
}>;
borderwidth: Attr<number, {
description: "Border width of the box, px.";
dflt: 0;
min: 0;
}>;
dtick: AttrSpec<unknown, unknown>;
exponentformat: Attr<"none" | "e" | "E" | "power" | "SI" | "B", {
description: "How large and small numbers are written: `none` (1000000), `e` (1e+6), `E` (1E+6), `power` (1×10⁶), `SI` (1M), `B` (like SI but 1B for 10⁹).";
dflt: "B";
editType: readonly (
| "calc"
| "calcIfAutorange"
| "crossTraceCalc"
| "layout"
| "ticks"
| "plot"
| "style"
| "colorbars"
| "legend"
| "modebar"
| "camera"
| "none")[];
values: readonly ["none", "e", "E", "power", "SI", "B"];
}>;
len: Attr<number, {
description: "Length of the colorbar along its axis, padding included (`ypad` / `xpad`).";
dflt: 1;
min: 0;
}>;
lenmode: Attr<"fraction" | "pixels", {
description: "Unit of `len`: px, or a fraction of the plot height (`v`) / width (`h`).";
dflt: "fraction";
values: readonly ["fraction", "pixels"];
}>;
minexponent: Attr<number, {
description: "Smallest decimal exponent written in exponent form (`SI`/`B` and exponent formats); smaller magnitudes are written out in full.";
dflt: 3;
editType: readonly (
| "calc"
| "calcIfAutorange"
| "crossTraceCalc"
| "layout"
| "ticks"
| "plot"
| "style"
| "colorbars"
| "legend"
| "modebar"
| "camera"
| "none")[];
min: 0;
}>;
nticks: Attr<number, {
description: "Maximum number of ticks for `tickmode: auto` (the actual number may be lower so steps stay round). 0 picks it from the axis length.";
dflt: 0;
editType: "ticks";
min: 0;
}>;
orientation: Attr<"v" | "h", {
description: "Vertical bar (`v`, beside the plot) or horizontal bar (`h`, above or below).";
dflt: "v";
values: readonly ["h", "v"];
}>;
outlinecolor: Attr<string, {
description: "Color of the outline around the bar.";
dflt: "#444";
}>;
outlinewidth: Attr<number, {
description: "Outline width, px.";
dflt: 1;
min: 0;
}>;
separatethousands: Attr<boolean, {
description: "Always separate thousands (1,000). By default only numbers with 5 or more integer digits are separated.";
dflt: false;
editType: readonly (
| "calc"
| "calcIfAutorange"
| "crossTraceCalc"
| "layout"
| "ticks"
| "plot"
| "style"
| "colorbars"
| "legend"
| "modebar"
| "camera"
| "none")[];
}>;
showexponent: Attr<"none" | "all" | "first" | "last", {
description: "Which tick labels show the exponent.";
dflt: "all";
editType: readonly (
| "calc"
| "calcIfAutorange"
| "crossTraceCalc"
| "layout"
| "ticks"
| "plot"
| "style"
| "colorbars"
| "legend"
| "modebar"
| "camera"
| "none")[];
values: readonly ["all", "first", "last", "none"];
}>;
showticklabels: Attr<boolean, {
description: "Show tick labels.";
dflt: true;
editType: readonly (
| "calc"
| "calcIfAutorange"
| "crossTraceCalc"
| "layout"
| "ticks"
| "plot"
| "style"
| "colorbars"
| "legend"
| "modebar"
| "camera"
| "none")[];
}>;
showtickprefix: Attr<"none" | "all" | "first" | "last", {
description: "Which tick labels get `tickprefix`.";
dflt: "all";
editType: readonly (
| "calc"
| "calcIfAutorange"
| "crossTraceCalc"
| "layout"
| "ticks"
| "plot"
| "style"
| "colorbars"
| "legend"
| "modebar"
| "camera"
| "none")[];
values: readonly ["all", "first", "last", "none"];
}>;
showticksuffix: Attr<"none" | "all" | "first" | "last", {
description: "Which tick labels get `ticksuffix`.";
dflt: "all";
editType: readonly (
| "calc"
| "calcIfAutorange"
| "crossTraceCalc"
| "layout"
| "ticks"
| "plot"
| "style"
| "colorbars"
| "legend"
| "modebar"
| "camera"
| "none")[];
values: readonly ["all", "first", "last", "none"];
}>;
thickness: Attr<number, {
description: "Thickness of the color bar.";
dflt: 30;
min: 0;
}>;
thicknessmode: Attr<"fraction" | "pixels", {
description: "Unit of `thickness`: px, or a fraction of the plot width (`v`) / height (`h`).";
dflt: "pixels";
values: readonly ["fraction", "pixels"];
}>;
tick0: AttrSpec<unknown, unknown>;
tickangle: Attr<number | "auto", {
description: "Tick-label rotation in degrees. `auto` rotates x-axis labels by the first `autotickangles` entry that avoids overlap.";
dflt: "auto";
editType: readonly (
| "calc"
| "calcIfAutorange"
| "crossTraceCalc"
| "layout"
| "ticks"
| "plot"
| "style"
| "colorbars"
| "legend"
| "modebar"
| "camera"
| "none")[];
extras: readonly ["auto"];
}>;
tickcolor: Attr<string, {
description: "Tick color. Defaults to `color`.";
editType: "ticks";
}>;
tickfont: ObjectNode<{
color: Attr<string, {
description: "Text color.";
editType: "style";
}>;
family: Attr<string, {
description: "CSS font-family list. The renderer uses the first family it can load and falls back through the list.";
noBlank: true;
strict: true;
}>;
lineposition: Attr<
| "none"
| "under"
| "over"
| "through"
| `under+${(...)}`
| `over+${(...)}`
| `through+${(...)}`, {
description: "Text decoration: `under`, `over` and/or `through` joined with `+` (e.g. `under+over`), or `none`.";
extras: readonly [...];
flags: readonly [..., ..., ...];
}>;
shadow: Attr<string, {
description: "CSS `text-shadow` behind the text (`2px 2px 3px black`; only the first shadow is drawn), `none`, or `auto` for a thin halo in the contrast color of the text.";
}>;
size: Attr<number, {
description: "Font size in CSS pixels.";
min: 1;
}>;
style: Attr<"normal" | "italic", {
description: "Font style.";
values: readonly [..., ...];
}>;
textcase: Attr<"normal" | "word caps" | "upper" | "lower", {
description: "Letter case transform: `upper`, `lower`, `word caps` (first letter of each word), or `normal`.";
values: readonly [..., ..., ..., ...];
}>;
variant: Attr<
| "normal"
| "small-caps"
| "all-small-caps"
| "all-petite-caps"
| "petite-caps"
| "unicase", {
description: "Capitals variant (CSS `font-variant-caps`). The SDF text renderer approximates small and petite caps with uppercase letters at a reduced size.";
values: readonly [..., ..., ..., ..., ..., ...];
}>;
weight: Attr<number | "normal" | "bold", {
description: "Font weight: a CSS numeric weight (1–1000), `normal` or `bold`.";
extras: readonly [..., ...];
max: 1000;
min: 1;
}>;
}>;
tickformat: Attr<string, {
description: "Tick-label format: a d3-format specifier for numbers (`.2f`, `~s`, `$,`) or a d3-time-format specifier for dates (`%b %Y`), plus `%{n}f` for `n` digits of fractional seconds and `%h` for the half year. Empty picks a format automatically.";
dflt: "";
editType: readonly (
| "calc"
| "calcIfAutorange"
| "crossTraceCalc"
| "layout"
| "ticks"
| "plot"
| "style"
| "colorbars"
| "legend"
| "modebar"
| "camera"
| "none")[];
}>;
ticklabeloverflow: Attr<"allow" | "hide past div" | "hide past domain", {
description: "Hide labels past the figure or past the bar. Defaults to `hide past domain` for inside labels, else `hide past div`.";
values: readonly ["allow", "hide past div", "hide past domain"];
}>;
ticklabelposition: Attr<
| "outside"
| "inside"
| "outside top"
| "inside top"
| "outside left"
| "inside left"
| "outside right"
| "inside right"
| "outside bottom"
| "inside bottom", {
description: "Tick labels outside the bar (away from it) or inside (over it); `top`/`bottom` (`v`) or `left`/`right` (`h`) move them beside their tick.";
dflt: "outside";
values: readonly ["outside", "inside", "outside top", "inside top", "outside bottom", "inside bottom", "outside left", "inside left", "outside right", "inside right"];
}>;
ticklabelstep: Attr<number, {
description: "Label every n-th tick only (`tickmode` `auto` and `linear`).";
dflt: 1;
editType: "ticks";
min: 1;
}>;
ticklen: Attr<number, {
description: "Tick length in px.";
dflt: 5;
editType: readonly (
| "calc"
| "calcIfAutorange"
| "crossTraceCalc"
| "layout"
| "ticks"
| "plot"
| "style"
| "colorbars"
| "legend"
| "modebar"
| "camera"
| "none")[];
min: 0;
}>;
tickmode: Attr<"auto" | "linear" | "array" | "sync", {
description: "`auto` picks up to `nticks` round ticks; `linear` places ticks from `tick0` every `dtick`; `array` uses `tickvals`/`ticktext`; `sync` aligns with the overlaid axis (reserved; behaves as `auto`). Defaults to `array` when `tickvals` is set, `linear` when `dtick` is set, else `auto`.";
editType: "ticks";
values: readonly ["auto", "linear", "array", "sync"];
}>;
tickprefix: Attr<string, {
description: "Text before each tick label.";
dflt: "";
editType: readonly (
| "calc"
| "calcIfAutorange"
| "crossTraceCalc"
| "layout"
| "ticks"
| "plot"
| "style"
| "colorbars"
| "legend"
| "modebar"
| "camera"
| "none")[];
}>;
ticks: Attr<"" | "outside" | "inside", {
description: "Draw tick marks outside or inside the plot area, or not at all (`''`).";
dflt: "";
editType: EditType;
values: readonly ["outside", "inside", ""];
}>;
ticksuffix: Attr<string, {
description: "Text after each tick label.";
dflt: "";
editType: readonly (
| "calc"
| "calcIfAutorange"
| "crossTraceCalc"
| "layout"
| "ticks"
| "plot"
| "style"
| "colorbars"
| "legend"
| "modebar"
| "camera"
| "none")[];
}>;
ticktext: AttrSpec<DataArray, DataArray | undefined>;
tickvals: AttrSpec<DataArray, DataArray | undefined>;
tickwidth: Attr<number, {
description: "Tick width in px.";
dflt: 1;
editType: "ticks";
min: 0;
}>;
title: ObjectNode<{
font: ObjectNode<{
color: Attr<..., ...>;
family: Attr<..., ...>;
lineposition: Attr<..., ...>;
shadow: Attr<..., ...>;
size: Attr<..., ...>;
style: Attr<..., ...>;
textcase: Attr<..., ...>;
variant: Attr<..., ...>;
weight: Attr<..., ...>;
}>;
side: Attr<"right" | "top" | "bottom", {
description: "Where the title goes relative to the bar. Defaults to `top` (`v`) or `right` (`h`).";
values: readonly [..., ..., ...];
}>;
text: Attr<string, {
description: "Colorbar title.";
dflt: "";
}>;
}>;
x: Attr<number, {
description: "Horizontal position (`xref` fraction). Defaults to 1.02 (`v`, paper), 1 (`v`, container) or 0.5 (`h`).";
}>;
xanchor: Attr<"left" | "center" | "right", {
description: "Which side of the colorbar sits at `x`. Defaults to `left` (`v`, paper), `right` (`v`, container) or `center` (`h`).";
values: readonly ["left", "center", "right"];
}>;
xpad: Attr<number, {
description: "Horizontal padding, px.";
dflt: 10;
min: 0;
}>;
xref: Attr<"container" | "paper", {
description: "Reference of `x`: the plot area (`paper`) or the whole figure.";
dflt: "paper";
values: readonly ["container", "paper"];
}>;
y: Attr<number, {
description: "Vertical position (`yref` fraction). Defaults to 0.5 (`v`), 1.02 (`h`, paper) or 1 (`h`, container).";
}>;
yanchor: Attr<"top" | "middle" | "bottom", {
description: "Which side of the colorbar sits at `y`. Defaults to `middle` (`v`), `bottom` (`h`, paper) or `top` (`h`, container).";
values: readonly ["top", "middle", "bottom"];
}>;
ypad: Attr<number, {
description: "Vertical padding, px.";
dflt: 10;
min: 0;
}>;
yref: Attr<"container" | "paper", {
description: "Reference of `y`: the plot area (`paper`) or the whole figure.";
dflt: "paper";
values: readonly ["container", "paper"];
}>;
}>;
colorscale: AttrSpec<ColorScale, ColorScale | undefined>;
line: ObjectNode<{
autocolorscale: AttrSpec<boolean, boolean | undefined>;
cauto: AttrSpec<boolean, boolean | undefined>;
cmax: AttrSpec<number, number | undefined>;
cmid: AttrSpec<number, number | undefined>;
cmin: AttrSpec<number, number | undefined>;
color: Attr<string | readonly string[], {
arrayOk: true;
description: "Marker outline color, one per point, or numbers mapped through its `colorscale`.";
editType: "style";
}>;
coloraxis: AttrSpec<string, string | undefined>;
colorscale: AttrSpec<ColorScale, ColorScale | undefined>;
reversescale: AttrSpec<boolean, boolean>;
width: Attr<number, {
description: "Width of the marker outline in CSS px.";
editType: "style";
min: 0;
}>;
}>;
opacity: Attr<number, {
description: "Marker opacity. Translucent markers are sorted back to front as the camera moves.";
editType: "style";
max: 1;
min: 0;
}>;
render: Attr<"sprite" | "sphere", {
description: "How markers are drawn (a Holochart extension): `'sprite'` — flat symbols facing the camera, Plotly's look; `'sphere'` — lit, shaded spheres of the same size (every symbol draws as a sphere).";
dflt: "sprite";
editType: "plot";
values: readonly ["sprite", "sphere"];
}>;
reversescale: AttrSpec<boolean, boolean>;
showscale: AttrSpec<boolean, boolean>;
size: Attr<
| number
| TypedArray
| readonly number[], {
animatable: true;
arrayOk: true;
description: "Marker diameter in CSS px, or one value per point (scaled by `sizeref`/`sizemode`).";
dflt: 6;
editType: "calc";
min: 0;
}>;
sizemin: Attr<number, {
description: "Minimum radius (px) of markers with per-point `size` values.";
dflt: 0;
editType: "calc";
min: 0;
}>;
sizemode: Attr<"area" | "diameter", {
description: "How per-point `size` values become px: proportional to the diameter or to the area (bubble charts).";
dflt: "diameter";
editType: "calc";
values: readonly ["diameter", "area"];
}>;
sizeref: Attr<number, {
description: "Divides per-point `size` values (bubble charts; see `sizemode`).";
dflt: 1;
editType: "calc";
}>;
symbol: Attr<
| "x"
| "circle"
| "circle-open"
| "cross"
| "diamond"
| "diamond-open"
| "square"
| "square-open"
| readonly (
| "x"
| "circle"
| "circle-open"
| "cross"
| "diamond"
| "diamond-open"
| "square"
| "square-open")[], {
arrayOk: true;
description: "Marker symbol (Plotly's 3D set), or one per point.";
dflt: "circle";
editType: "style";
values: readonly ["circle", "circle-open", "cross", "diamond", "diamond-open", "square", "square-open", "x"];
}>;
}>;
mode: Attr<
| "none"
| "text"
| "lines"
| "markers"
| `text+${string}`
| `lines+${string}`
| `markers+${string}`, {
description: "Drawing mode: any of `'lines'`, `'markers'`, `'text'` joined by `+`, or `'none'`.";
dflt: "lines+markers";
editType: "calc";
extras: readonly ["none"];
flags: readonly ["lines", "markers", "text"];
}>;
projection: ObjectNode<{
x: ObjectNode<{
opacity: Attr<number, {
description: "Opacity of the shadow markers (times the markers own opacity).";
dflt: 1;
editType: "style";
max: 1;
min: 0;
}>;
scale: Attr<number, {
description: "Size of the shadow markers relative to the markers.";
dflt: number;
editType: "style";
max: 10;
min: 0;
}>;
show: Attr<boolean, {
description: | "Draw the points' shadow on the wall perpendicular to the x axis (the far wall, behind the data)."
| "Draw the points' shadow on the wall perpendicular to the y axis (the far wall, behind the data)."
| "Draw the points' shadow on the wall perpendicular to the z axis (the far wall, behind the data).";
dflt: false;
editType: "plot";
}>;
}>;
y: ObjectNode<{
opacity: Attr<number, {
description: "Opacity of the shadow markers (times the markers own opacity).";
dflt: 1;
editType: "style";
max: 1;
min: 0;
}>;
scale: Attr<number, {
description: "Size of the shadow markers relative to the markers.";
dflt: number;
editType: "style";
max: 10;
min: 0;
}>;
show: Attr<boolean, {
description: | "Draw the points' shadow on the wall perpendicular to the x axis (the far wall, behind the data)."
| "Draw the points' shadow on the wall perpendicular to the y axis (the far wall, behind the data)."
| "Draw the points' shadow on the wall perpendicular to the z axis (the far wall, behind the data).";
dflt: false;
editType: "plot";
}>;
}>;
z: ObjectNode<{
opacity: Attr<number, {
description: "Opacity of the shadow markers (times the markers own opacity).";
dflt: 1;
editType: "style";
max: 1;
min: 0;
}>;
scale: Attr<number, {
description: "Size of the shadow markers relative to the markers.";
dflt: number;
editType: "style";
max: 10;
min: 0;
}>;
show: Attr<boolean, {
description: | "Draw the points' shadow on the wall perpendicular to the x axis (the far wall, behind the data)."
| "Draw the points' shadow on the wall perpendicular to the y axis (the far wall, behind the data)."
| "Draw the points' shadow on the wall perpendicular to the z axis (the far wall, behind the data).";
dflt: false;
editType: "plot";
}>;
}>;
}>;
scene: Attr<"scene" | `scene${number}`, {
description: "The 3D scene this trace is drawn in: `'scene'` (`layout.scene`), `'scene2'` (`layout.scene2`), ….";
dflt: "scene";
editType: "calc";
}>;
surfaceaxis: Attr<-1 | 0 | 1 | 2, {
description: "Fill a surface through the points, triangulated (Delaunay) in the plane perpendicular to this axis (0: x, 1: y, 2: z); -1 for none.";
dflt: -1;
editType: "calc";
values: readonly [-1, 0, 1, 2];
}>;
surfacecolor: Attr<string, {
description: "Color of the `surfaceaxis` surface. Defaults to the line or marker color.";
editType: "style";
}>;
text: Attr<string | readonly string[], {
arrayOk: true;
description: "Text per point: the labels of `mode` `text`, and hover text.";
dflt: "";
editType: "plot";
}>;
textfont: ObjectNode<{
color: Attr<string | readonly string[], {
arrayOk: true;
description: "Text color, or one per point.";
editType: "style";
}>;
family: Attr<string | readonly string[], {
arrayOk: true;
description: "CSS font family of the text labels, or one per point.";
editType: "plot";
noBlank: true;
strict: true;
}>;
size: Attr<
| number
| TypedArray
| readonly number[], {
arrayOk: true;
description: "Font size in CSS px, or one per point.";
editType: "plot";
min: 1;
}>;
style: Attr<"normal" | "italic", {
description: "Font style.";
editType: "plot";
values: readonly ["normal", "italic"];
}>;
weight: Attr<number | "normal" | "bold", {
description: "Font weight: a CSS numeric weight, `normal` or `bold`.";
editType: "plot";
extras: readonly ["normal", "bold"];
max: 1000;
min: 1;
}>;
}>;
textposition: Attr<
| PrimitiveValue
| readonly PrimitiveValue[], {
arrayOk: true;
description: "Position of each text label around its point (and marker), or one per point; the labels face the camera.";
dflt: "top center";
editType: "plot";
values: readonly PrimitiveValue[];
}>;
texttemplate: Attr<string | readonly string[], {
arrayOk: true;
description: "Template for the text labels, e.g. `'%{y:.2f}'` or `'%{x|%b %d}'` (d3-format / d3-time-format after `:` / `|`). Keys: `x`, `y`, `text`, `customdata`, `marker.size`, `marker.color`, `meta`. Overrides `text`.";
dflt: "";
editType: "plot";
}>;
x: AttrSpec<DataArray, DataArray | undefined>;
xhoverformat: Attr<string, {
description: | "d3-format (or d3-time-format on date axes) of the x values in hover labels, overriding the scene axis' `hoverformat`."
| "d3-format (or d3-time-format on date axes) of the y values in hover labels, overriding the scene axis' `hoverformat`."
| "d3-format (or d3-time-format on date axes) of the z values in hover labels, overriding the scene axis' `hoverformat`.";
dflt: "";
editType: "none";
}>;
y: AttrSpec<DataArray, DataArray | undefined>;
yhoverformat: Attr<string, {
description: | "d3-format (or d3-time-format on date axes) of the x values in hover labels, overriding the scene axis' `hoverformat`."
| "d3-format (or d3-time-format on date axes) of the y values in hover labels, overriding the scene axis' `hoverformat`."
| "d3-format (or d3-time-format on date axes) of the z values in hover labels, overriding the scene axis' `hoverformat`.";
dflt: "";
editType: "none";
}>;
z: AttrSpec<DataArray, DataArray | undefined>;
zhoverformat: Attr<string, {
description: | "d3-format (or d3-time-format on date axes) of the x values in hover labels, overriding the scene axis' `hoverformat`."
| "d3-format (or d3-time-format on date axes) of the y values in hover labels, overriding the scene axis' `hoverformat`."
| "d3-format (or d3-time-format on date axes) of the z values in hover labels, overriding the scene axis' `hoverformat`.";
dflt: "";
editType: "none";
}>;
}>;Experimental
scatter3d.