Cartesian

The Cartesian family contains 13 renderer-backed chart variants. Use this page as the entry point for choosing the right variant, then open the variant page for the screenshot, data shape, Rust API notes, and example code.
The chart family is still ordinary Fission UI. Each variant is constructed from typed Rust data, participates in layout and theme decisions, and can be driven by app state, reducers, resources, jobs, or services just like any other widget.
Area line screenshot

Variants

Chart
Data shape
Use when
Vec<f32> plus area style.
Use it when total volume is as important as the outline.
BarSeries values plus background and border-radius styling.
Use it for progress-like category comparisons where the maximum should remain visible.
Vec<f32> aligned to category labels.
Use it when individual values need easy comparison.
Vec<f32> on a category, value, or time axis.
Use it when the shape of change matters more than individual bars.
Multiple bar series sharing the same category axis.
Use it to compare related measures within each group.
BarSeries values with a category y-axis and value x-axis.
Use it when category labels are long or ranking order is more important than time order.
A longer Vec<f32> aligned to ordered category samples.
Use it for telemetry, monitoring, and sampled metrics where the trend matters more than every label.
Numeric values plus symbol choice.
Use it when the chart should feel branded without giving up scale.
BarSeries values that may be positive or negative.
Use it for deltas, profit/loss, variance, and month-over-month movement.
Vec<f32> with smooth interpolation enabled.
Use it for dashboards where the series is sampled often enough to justify interpolation.
Several line series sharing one stack key.
Use it to show composition over time without losing the total.
Multiple bar series sharing one stack key.
Use it to show composition and total at the same time.
Vec<f32> with start, middle, or end step behavior.
Use it for counters, states, quotas, and event-driven changes.

Choosing within this family

Start with the user's question, not the visual effect. Pick the simplest variant that makes the answer clear, add interaction only when it reduces work for the user, and keep animation purposeful enough that it explains a change rather than decorating the page.

Authoring from a Fission component

Use this reference page as the chart expression inside ordinary Fission component conversion. The chart is a Widget, so it can sit inside a Card, Grid, Scroll, responsive page section, or any other layout container.
use fission::prelude::*;
use fission::charts::{Axis, Chart, LineSeries};

pub struct CartesianChart;

impl From<CartesianChart> for Widget {
    fn from(_: CartesianChart) -> Widget {
        Chart::new()
            .title("Cartesian")
            .x_axis(Axis::category(vec!["A", "B", "C"]))
            .y_axis(Axis::value())
            .series(vec![LineSeries::new("Series").data(vec![1.0, 2.0, 3.0]).into()])
            .into()
    }
}
Keep expensive data loading outside component conversion. A reducer, job, service, or server route should prepare the typed chart data, then the component should read that state and construct the chart deterministically.

Options, accessibility, and diagnostics

Area
What to decide
How to verify
Data shape
Keep source rows in typed Rust structs, then map them into the series type shown in the example.
Unit test the mapping separately from rendering.
Options
Choose axes, legends, labels, animation, and interaction based on the user's task.
Add a screenshot test when changing visual behavior.
Accessibility
Provide a clear title and adjacent summary text for important trends or outliers.
Inspect the generated semantics and make sure the chart is understandable without color alone.
Failure handling
Render an empty, loading, or error state before constructing the chart if data is unavailable.
Test empty data, partial data, and failed fetches.
Performance
Prefer summarized or windowed data for very large datasets; keep full raw history in the data layer.
Profile frame time and interaction latency with representative data volumes.
Fission
A cross-platform, GPU-accelerated user interface framework for Rust. MIT licensed.
Copyright (c) 2026 Fission
Ready to use today. Widget APIs are expected to remain stable; some runtime and shell APIs may change before 1.0.0.
Fission 0.7.0