Encode channels¶
Map plain per-unit arrays onto visual channels — the package's data contract.
lexograph.encode.channels.normalize_size(values, *, lo=6.0, hi=24.0, power=1.0)
¶
Scale a per-unit scalar array into a size range.
The values are min-max normalised to [0, 1], raised to power (a
power above 1 compresses the low end so only the largest units stand
out, mirroring the PageRank-driven sizing in the Wittgenstein piece), then
mapped onto [lo, hi].
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
values
|
Iterable[float]
|
One scalar per unit (e.g. sentence length or a centrality). |
required |
lo
|
float
|
The smallest output size. |
6.0
|
hi
|
float
|
The largest output size. |
24.0
|
power
|
float
|
Exponent applied to the normalised values before scaling. |
1.0
|
Returns:
| Type | Description |
|---|---|
FloatArray
|
A float array of sizes, one per input value. A constant or empty input |
FloatArray
|
maps every unit to |
Raises:
| Type | Description |
|---|---|
ValueError
|
If |
Examples:
Source code in lexograph/encode/channels.py
lexograph.encode.channels.categorical_colors(labels, *, cmap=None)
¶
Map category labels to a stable qualitative palette.
Labels are coloured in order of first appearance, so the same label always
gets the same colour and adjacent distinct labels are visually separated.
The default palette follows the Wittgenstein piece: tab20 for up to 20
categories, evenly spaced hsv beyond that.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
labels
|
Sequence[object]
|
One hashable label per unit (e.g. a cluster or community id). |
required |
cmap
|
str | None
|
Override colormap name. |
None
|
Returns:
| Type | Description |
|---|---|
list[RGBA]
|
One RGBA colour per input label. |
Examples:
Source code in lexograph/encode/channels.py
lexograph.encode.channels.continuous_colors(values, *, cmap='viridis')
¶
Map a per-unit numeric array through a continuous colormap.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
values
|
Iterable[float]
|
One scalar per unit. |
required |
cmap
|
str
|
A continuous matplotlib colormap name. |
'viridis'
|
Returns:
| Type | Description |
|---|---|
list[RGBA]
|
One RGBA colour per value. A constant or empty input maps every unit to |
list[RGBA]
|
the colormap's midpoint. |
Examples:
Source code in lexograph/encode/channels.py
lexograph.encode.channels.Channels
dataclass
¶
Resolved visual channels, one entry per unit.
Attributes:
| Name | Type | Description |
|---|---|---|
sizes |
FloatArray | None
|
Per-unit size in points, or |
colors |
list[RGBA] | None
|
Per-unit RGBA colour, or |
glyphs |
list[str] | None
|
Per-unit text to draw, or |