
Field | Type | Notes |
|---|---|---|
scene | Scene3D | Owns the retained native 3D chart viewport. |
primitive | Primitive3D | Uses spheres, cuboids, or meshes for chart geometry. |
width / height | f32 | Optional fixed size; omit them when the chart should flex inside Fission layout. |
use fission::three_d::{Point3D, Primitive3D, Scene3D};
use fission::core::op::Color;
let scene = Scene3D::new()
.add_primitive(Primitive3D::Sphere {
center: Point3D::new(0.0, 0.0, 0.0),
radius: 0.4,
color: Color { r: 20, g: 184, b: 166, a: 255 },
});
use fission::prelude::*;
use fission::charts::{Axis, Chart, LineSeries};
pub struct Fission3DLineChart;
impl From<Fission3DLineChart> for Widget {
fn from(_: Fission3DLineChart) -> Widget {
Chart::new()
.title("3D line")
.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()
}
}
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. |