Skip to main content

plotlars_core/components/
intensity.rs

1/// An enumeration representing the source of intensity values for mesh coloring.
2///
3/// The `IntensityMode` enum specifies whether intensity values should be taken
4/// from vertices or cells (faces) of a 3D mesh.
5///
6/// # Example
7///
8/// ```rust
9/// use plotlars::{ColorBar, IntensityMode, Mesh3D, Palette, Plot};
10/// use polars::prelude::*;
11///
12/// // Create sample mesh data with intensity values
13/// let x = vec![0.0, 1.0, 2.0, 0.0];
14/// let y = vec![0.0, 0.0, 1.0, 2.0];
15/// let z = vec![0.0, 2.0, 0.0, 1.0];
16/// let intensity = vec![0.0, 0.5, 0.8, 1.0];
17///
18/// let dataset = DataFrame::new(x.len(), vec![
19///     Column::new("x".into(), x),
20///     Column::new("y".into(), y),
21///     Column::new("z".into(), z),
22///     Column::new("intensity".into(), intensity),
23/// ])
24/// .unwrap();
25///
26/// Mesh3D::builder()
27///     .data(&dataset)
28///     .x("x")
29///     .y("y")
30///     .z("z")
31///     .intensity("intensity")
32///     .intensity_mode(IntensityMode::Vertex)
33///     .color_scale(Palette::Viridis)
34///     .color_bar(
35///         &ColorBar::new()
36///             .x(0.65)  // Position color bar extremely close to the plot
37///     )
38///     .build()
39///     .plot();
40/// ```
41///
42/// ![Example](https://imgur.com/J4qIyU2.png)
43#[derive(Clone, Copy)]
44pub enum IntensityMode {
45    /// Use intensity values from mesh vertices
46    Vertex,
47    /// Use intensity values from mesh cells (faces)
48    Cell,
49}