Examples
Horizon Chart
from rich.console import Console
from graphical.bar import Bar
from graphical.data import bands
from graphical.group import Horizontal, Vertical
from graphical.scale.chromatic.sequential import GREENS
from data import data_horizon as data_sets
levels = 4
colors = GREENS.palette(levels)
value_range = (
min(d for data in data_sets for d in data),
max(d for data in data_sets for d in data),
)
graph = Vertical(gap=1)
for data in data_sets:
horizon = Horizontal()
for level, value in bands(data, levels):
horizon.append(
Bar(
value if level < levels else 0.0,
(0, 1),
length=9,
orientation="vertical",
color=colors[level] if level < levels else None,
bgcolor=colors[level - 1] if level > 0 else None,
)
)
graph.append(horizon)
console = Console()
console.print(graph)
Gantt Chart
from rich.console import Console
from graphical.bar import RangeStack
from graphical.group import Vertical
from data import data_gantt as data
graph = Vertical(gap=1)
for start, stop, progress in data:
length = stop - start
graph.append(
RangeStack(
(start, length * progress, length * (1.0 - progress)),
(0, 1),
orientation="horizontal",
colors=["purple", "red"],
)
)
console = Console()
console.print(graph)
Stacked Bar
from rich.console import Console
from graphical.bar import Stack
from graphical.group import Horizontal
from data import data_stacked as data
max_sum = max(sum(d) for d in data)
graph = Horizontal(gap=1)
for d in data[:34]:
graph.append(
Stack(
d,
(0, max_sum),
orientation="vertical",
width=2,
length=15,
)
)
console = Console()
console.print(graph)
Stacked Area
from rich.console import Console
from graphical.bar import Stack
from graphical.group import Horizontal
from data import data_stacked as data
max_sum = max(sum(d) for d in data)
graph = Horizontal()
for d in data:
graph.append(
Stack(
d,
(0, max_sum),
orientation="vertical",
)
)
console = Console()
console.print(graph)
Streamgraph
from rich.console import Console
from graphical.bar import Stack
from graphical.group import Horizontal
from data import data_stacked as data
max_sum = max(sum(d) for d in data)
graph = Horizontal()
for d in data:
offset = (max_sum - sum(d)) / 2.0
graph.append(
Stack(
d,
(-offset, -offset + max_sum),
orientation="vertical",
)
)
console = Console()
console.print(graph)
Heatmap
from rich.console import Console
from graphical.group import Horizontal, Vertical
from graphical.heat import Heat
from graphical.scale.chromatic.sequential import VIRIDIS
from data import data_heatmap as data
value_range = (
min(min(d) for d in data),
max(max(d) for d in data),
)
graph = Vertical()
for data_line in data:
line = Horizontal()
for entry in data_line:
line.append(
Heat(
data=entry,
value_range=value_range,
scheme=VIRIDIS,
repeat_x=4,
repeat_y=2,
)
)
graph.append(line)
console = Console()
console.print(graph)
Density
from rich.console import Console
from graphical.data import pairs
from graphical.group import Horizontal, Vertical
from graphical.heat import Heat
from graphical.scale.chromatic.sequential import VIRIDIS
from data import data_density as data
value_range = (min(min(d) for d in data), max(max(d) for d in data))
graph = Vertical()
for pair in pairs(data):
line = Horizontal()
for entries in zip(*pair):
line.append(
Heat(
data=entries,
value_range=value_range,
scheme=VIRIDIS,
orientation="vertical",
)
)
graph.append(line)
console = Console()
console.print(graph)
Ridgeline
from rich.console import Console
from graphical.bar import Bar
from graphical.group import Horizontal
from graphical.layer import Layers
from graphical.offset import Offset
from graphical.scale.chromatic.sequential import VIRIDIS
from data import data_ridgeline as data
value_range = (0, max(max(d) for d in data))
colors = VIRIDIS.palette(10)
graph = Layers()
for idx, line_data in enumerate(data):
line = Horizontal()
for value in line_data:
line.append(
Bar(
value,
value_range,
length=5,
color=colors[idx],
orientation="vertical",
)
)
graph.append(Offset(line, 0, idx * 2))
console = Console()
console.print(graph)