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/// 
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}