ColorBar

Struct ColorBar 

Source
pub struct ColorBar { /* private fields */ }
Expand description

A structure representing a color bar component for visualizations.

§Example

use polars::prelude::*;
use plotlars::{ColorBar, HeatMap, Orientation, Palette, Plot, Text, ValueExponent};

let dataset = LazyCsvReader::new(PlPath::new("data/heatmap.csv"))
    .finish()
    .unwrap()
    .collect()
    .unwrap();

HeatMap::builder()
    .data(&dataset)
    .x("x")
    .y("y")
    .z("z")
    .color_bar(
        &ColorBar::new()
            .orientation(Orientation::Horizontal)
            .length(290)
            .value_exponent(ValueExponent::None)
            .separate_thousands(true)
            .tick_length(5)
            .tick_step(2500.0)
            .tick_angle(90.0)
            .y(-0.6)
    )
    .color_scale(Palette::Viridis)
    .build()
    .plot();

Example

Implementations§

Source§

impl ColorBar

Source

pub fn new() -> Self

Creates a new ColorBar instance with default settings.

Examples found in repository?
examples/heatmap.rs (line 18)
5fn main() {
6    let dataset = LazyCsvReader::new(PlPath::new("data/heatmap.csv"))
7        .finish()
8        .unwrap()
9        .collect()
10        .unwrap();
11
12    HeatMap::builder()
13        .data(&dataset)
14        .x("x")
15        .y("y")
16        .z("z")
17        .color_bar(
18            &ColorBar::new()
19                .length(290)
20                .value_exponent(ValueExponent::None)
21                .separate_thousands(true)
22                .tick_length(5)
23                .tick_step(2500.0),
24        )
25        .plot_title(Text::from("Heat Map").font("Arial").size(18))
26        .color_scale(Palette::Viridis)
27        .build()
28        .plot();
29}
More examples
Hide additional examples
examples/mesh3d.rs (line 109)
69fn example_with_intensity() {
70    let mut x = Vec::new();
71    let mut y = Vec::new();
72    let mut z = Vec::new();
73    let mut intensity = Vec::new();
74
75    for i in 0..10 {
76        for j in 0..10 {
77            let xi = i as f64 * 0.1;
78            let yj = j as f64 * 0.1;
79            x.push(xi);
80            y.push(yj);
81            z.push(
82                (xi * 2.0 * std::f64::consts::PI).sin()
83                    * (yj * 2.0 * std::f64::consts::PI).cos()
84                    * 0.3,
85            );
86            intensity.push(xi * yj);
87        }
88    }
89
90    let dataset = DataFrame::new(vec![
91        Column::new("x".into(), x),
92        Column::new("y".into(), y),
93        Column::new("z".into(), z),
94        Column::new("intensity".into(), intensity),
95    ])
96    .unwrap();
97
98    Mesh3D::builder()
99        .data(&dataset)
100        .x("x")
101        .y("y")
102        .z("z")
103        .intensity("intensity")
104        .intensity_mode(IntensityMode::Vertex)
105        .color_scale(Palette::Viridis)
106        .reverse_scale(false)
107        .show_scale(true)
108        .color_bar(
109            &ColorBar::new()
110                .x(0.85) // Move color bar very close to the plot
111                .title("Intensity"),
112        )
113        .opacity(0.95)
114        .plot_title(
115            Text::from("Mesh3D with Intensity Coloring")
116                .font("Arial")
117                .size(20),
118        )
119        .build()
120        .plot();
121}
examples/surfaceplot.rs (line 50)
8fn main() {
9    let n: usize = 100;
10    let (x_base, _): (Vec<f64>, Option<usize>) =
11        Array::linspace(-10., 10., n).into_raw_vec_and_offset();
12    let (y_base, _): (Vec<f64>, Option<usize>) =
13        Array::linspace(-10., 10., n).into_raw_vec_and_offset();
14
15    let x = x_base
16        .iter()
17        .flat_map(|&xi| iter::repeat_n(xi, n))
18        .collect::<Vec<_>>();
19
20    let y = y_base
21        .iter()
22        .cycle()
23        .take(n * n)
24        .cloned()
25        .collect::<Vec<_>>();
26
27    let z = x_base
28        .iter()
29        .flat_map(|i| {
30            y_base
31                .iter()
32                .map(|j| 1.0 / (j * j + 5.0) * j.sin() + 1.0 / (i * i + 5.0) * i.cos())
33                .collect::<Vec<_>>()
34        })
35        .collect::<Vec<_>>();
36
37    let dataset = df![
38        "x" => &x,
39        "y" => &y,
40        "z" => &z,
41    ]
42    .unwrap();
43
44    SurfacePlot::builder()
45        .data(&dataset)
46        .x("x")
47        .y("y")
48        .z("z")
49        .plot_title(Text::from("Surface Plot").font("Arial").size(18))
50        .color_bar(&ColorBar::new().border_width(1))
51        .color_scale(Palette::Cividis)
52        .reverse_scale(true)
53        .lighting(
54            &Lighting::new()
55                .position(1, 0, 0)
56                .ambient(1.0)
57                .diffuse(1.0)
58                .fresnel(1.0)
59                .roughness(1.0)
60                .specular(1.0),
61        )
62        .opacity(0.5)
63        .build()
64        .plot();
65}
Source

pub fn background_color(self, color: Rgb) -> Self

Sets the background color of the color bar.

§Arguments
  • color - An Rgb value representing the desired background color.
Source

pub fn border_color(self, color: Rgb) -> Self

Sets the border color of the color bar.

§Arguments
  • color - An Rgb value representing the desired border color.
Source

pub fn border_width(self, width: usize) -> Self

Sets the width of the color bar’s border.

§Arguments
  • width - A usize value specifying the border width in pixels.
Examples found in repository?
examples/surfaceplot.rs (line 50)
8fn main() {
9    let n: usize = 100;
10    let (x_base, _): (Vec<f64>, Option<usize>) =
11        Array::linspace(-10., 10., n).into_raw_vec_and_offset();
12    let (y_base, _): (Vec<f64>, Option<usize>) =
13        Array::linspace(-10., 10., n).into_raw_vec_and_offset();
14
15    let x = x_base
16        .iter()
17        .flat_map(|&xi| iter::repeat_n(xi, n))
18        .collect::<Vec<_>>();
19
20    let y = y_base
21        .iter()
22        .cycle()
23        .take(n * n)
24        .cloned()
25        .collect::<Vec<_>>();
26
27    let z = x_base
28        .iter()
29        .flat_map(|i| {
30            y_base
31                .iter()
32                .map(|j| 1.0 / (j * j + 5.0) * j.sin() + 1.0 / (i * i + 5.0) * i.cos())
33                .collect::<Vec<_>>()
34        })
35        .collect::<Vec<_>>();
36
37    let dataset = df![
38        "x" => &x,
39        "y" => &y,
40        "z" => &z,
41    ]
42    .unwrap();
43
44    SurfacePlot::builder()
45        .data(&dataset)
46        .x("x")
47        .y("y")
48        .z("z")
49        .plot_title(Text::from("Surface Plot").font("Arial").size(18))
50        .color_bar(&ColorBar::new().border_width(1))
51        .color_scale(Palette::Cividis)
52        .reverse_scale(true)
53        .lighting(
54            &Lighting::new()
55                .position(1, 0, 0)
56                .ambient(1.0)
57                .diffuse(1.0)
58                .fresnel(1.0)
59                .roughness(1.0)
60                .specular(1.0),
61        )
62        .opacity(0.5)
63        .build()
64        .plot();
65}
Source

pub fn tick_step(self, step: f64) -> Self

Sets the step size between ticks on the color bar.

§Arguments
  • step - A f64 value representing the step size between ticks.
Examples found in repository?
examples/heatmap.rs (line 23)
5fn main() {
6    let dataset = LazyCsvReader::new(PlPath::new("data/heatmap.csv"))
7        .finish()
8        .unwrap()
9        .collect()
10        .unwrap();
11
12    HeatMap::builder()
13        .data(&dataset)
14        .x("x")
15        .y("y")
16        .z("z")
17        .color_bar(
18            &ColorBar::new()
19                .length(290)
20                .value_exponent(ValueExponent::None)
21                .separate_thousands(true)
22                .tick_length(5)
23                .tick_step(2500.0),
24        )
25        .plot_title(Text::from("Heat Map").font("Arial").size(18))
26        .color_scale(Palette::Viridis)
27        .build()
28        .plot();
29}
Source

pub fn value_exponent(self, exponent: ValueExponent) -> Self

Sets the exponent format for values on the axis.

§Argument
  • exponent - A ValueExponent enum value representing the exponent format.
Examples found in repository?
examples/heatmap.rs (line 20)
5fn main() {
6    let dataset = LazyCsvReader::new(PlPath::new("data/heatmap.csv"))
7        .finish()
8        .unwrap()
9        .collect()
10        .unwrap();
11
12    HeatMap::builder()
13        .data(&dataset)
14        .x("x")
15        .y("y")
16        .z("z")
17        .color_bar(
18            &ColorBar::new()
19                .length(290)
20                .value_exponent(ValueExponent::None)
21                .separate_thousands(true)
22                .tick_length(5)
23                .tick_step(2500.0),
24        )
25        .plot_title(Text::from("Heat Map").font("Arial").size(18))
26        .color_scale(Palette::Viridis)
27        .build()
28        .plot();
29}
Source

pub fn length(self, length: usize) -> Self

Sets the length of the color bar.

§Arguments
  • length - A usize value specifying the length in pixels.
Examples found in repository?
examples/heatmap.rs (line 19)
5fn main() {
6    let dataset = LazyCsvReader::new(PlPath::new("data/heatmap.csv"))
7        .finish()
8        .unwrap()
9        .collect()
10        .unwrap();
11
12    HeatMap::builder()
13        .data(&dataset)
14        .x("x")
15        .y("y")
16        .z("z")
17        .color_bar(
18            &ColorBar::new()
19                .length(290)
20                .value_exponent(ValueExponent::None)
21                .separate_thousands(true)
22                .tick_length(5)
23                .tick_step(2500.0),
24        )
25        .plot_title(Text::from("Heat Map").font("Arial").size(18))
26        .color_scale(Palette::Viridis)
27        .build()
28        .plot();
29}
Source

pub fn n_ticks(self, n: usize) -> Self

Sets the number of ticks on the color bar.

§Arguments
  • n - A usize value representing the number of ticks.
Source

pub fn orientation(self, orientation: Orientation) -> Self

Sets the orientation of the color bar.

§Arguments
  • orientation - An Orientation enum value specifying the orientation (e.g., horizontal or vertical).
Source

pub fn outline_color(self, color: Rgb) -> Self

Sets the outline color of the color bar.

§Arguments
  • color - An Rgb value representing the desired outline color.
Source

pub fn outline_width(self, width: usize) -> Self

Sets the outline width of the color bar.

§Arguments
  • width - A usize value specifying the outline width in pixels.
Source

pub fn separate_thousands(self, separate_thousands: bool) -> Self

Specifies whether to separate thousands in tick labels.

§Arguments
  • separate_thousands - A bool indicating whether to separate thousands.
Examples found in repository?
examples/heatmap.rs (line 21)
5fn main() {
6    let dataset = LazyCsvReader::new(PlPath::new("data/heatmap.csv"))
7        .finish()
8        .unwrap()
9        .collect()
10        .unwrap();
11
12    HeatMap::builder()
13        .data(&dataset)
14        .x("x")
15        .y("y")
16        .z("z")
17        .color_bar(
18            &ColorBar::new()
19                .length(290)
20                .value_exponent(ValueExponent::None)
21                .separate_thousands(true)
22                .tick_length(5)
23                .tick_step(2500.0),
24        )
25        .plot_title(Text::from("Heat Map").font("Arial").size(18))
26        .color_scale(Palette::Viridis)
27        .build()
28        .plot();
29}
Source

pub fn width(self, width: usize) -> Self

Sets the width of the color bar.

§Arguments
  • width - A usize value specifying the width in pixels.
Source

pub fn tick_angle(self, angle: f64) -> Self

Sets the angle of the tick labels on the color bar.

§Arguments
  • angle - A f64 value representing the angle in degrees.
Source

pub fn tick_color(self, color: Rgb) -> Self

Sets the color of the ticks on the color bar.

§Arguments
  • color - An Rgb value representing the tick color.
Source

pub fn tick_font(self, font: impl Into<String>) -> Self

Sets the font of the tick labels on the color bar.

§Arguments
  • font - A string representing the font family.
Source

pub fn tick_length(self, length: usize) -> Self

Sets the length of the axis ticks.

§Argument
  • length - A usize value representing the length of the ticks.
Examples found in repository?
examples/heatmap.rs (line 22)
5fn main() {
6    let dataset = LazyCsvReader::new(PlPath::new("data/heatmap.csv"))
7        .finish()
8        .unwrap()
9        .collect()
10        .unwrap();
11
12    HeatMap::builder()
13        .data(&dataset)
14        .x("x")
15        .y("y")
16        .z("z")
17        .color_bar(
18            &ColorBar::new()
19                .length(290)
20                .value_exponent(ValueExponent::None)
21                .separate_thousands(true)
22                .tick_length(5)
23                .tick_step(2500.0),
24        )
25        .plot_title(Text::from("Heat Map").font("Arial").size(18))
26        .color_scale(Palette::Viridis)
27        .build()
28        .plot();
29}
Source

pub fn tick_labels(self, labels: Vec<impl Into<String>>) -> Self

Sets the tick labels for the axis.

§Argument
  • labels - A vector of values that can be converted into String, representing the tick labels.
Source

pub fn tick_values(self, values: Vec<f64>) -> Self

Sets the tick values for the axis.

§Argument
  • values - A vector of f64 values representing the tick values.
Source

pub fn tick_width(self, width: usize) -> Self

Sets the width of the ticks on the color bar.

§Arguments
  • width - A usize value specifying the tick width in pixels.
Source

pub fn tick_direction(self, direction: TickDirection) -> Self

Sets the direction of the axis ticks.

§Argument
  • direction - A TickDirection enum value representing the direction of the ticks.
Source

pub fn title<T: Into<Text>>(self, title: T) -> Self

Sets the title of the color bar.

§Arguments
  • title - A value that can be converted into Text, representing the title.
Examples found in repository?
examples/mesh3d.rs (line 111)
69fn example_with_intensity() {
70    let mut x = Vec::new();
71    let mut y = Vec::new();
72    let mut z = Vec::new();
73    let mut intensity = Vec::new();
74
75    for i in 0..10 {
76        for j in 0..10 {
77            let xi = i as f64 * 0.1;
78            let yj = j as f64 * 0.1;
79            x.push(xi);
80            y.push(yj);
81            z.push(
82                (xi * 2.0 * std::f64::consts::PI).sin()
83                    * (yj * 2.0 * std::f64::consts::PI).cos()
84                    * 0.3,
85            );
86            intensity.push(xi * yj);
87        }
88    }
89
90    let dataset = DataFrame::new(vec![
91        Column::new("x".into(), x),
92        Column::new("y".into(), y),
93        Column::new("z".into(), z),
94        Column::new("intensity".into(), intensity),
95    ])
96    .unwrap();
97
98    Mesh3D::builder()
99        .data(&dataset)
100        .x("x")
101        .y("y")
102        .z("z")
103        .intensity("intensity")
104        .intensity_mode(IntensityMode::Vertex)
105        .color_scale(Palette::Viridis)
106        .reverse_scale(false)
107        .show_scale(true)
108        .color_bar(
109            &ColorBar::new()
110                .x(0.85) // Move color bar very close to the plot
111                .title("Intensity"),
112        )
113        .opacity(0.95)
114        .plot_title(
115            Text::from("Mesh3D with Intensity Coloring")
116                .font("Arial")
117                .size(20),
118        )
119        .build()
120        .plot();
121}
Source

pub fn x(self, x: f64) -> Self

Sets the x-coordinate position of the text.

§Argument
  • x - A f64 value specifying the horizontal position.
Examples found in repository?
examples/mesh3d.rs (line 110)
69fn example_with_intensity() {
70    let mut x = Vec::new();
71    let mut y = Vec::new();
72    let mut z = Vec::new();
73    let mut intensity = Vec::new();
74
75    for i in 0..10 {
76        for j in 0..10 {
77            let xi = i as f64 * 0.1;
78            let yj = j as f64 * 0.1;
79            x.push(xi);
80            y.push(yj);
81            z.push(
82                (xi * 2.0 * std::f64::consts::PI).sin()
83                    * (yj * 2.0 * std::f64::consts::PI).cos()
84                    * 0.3,
85            );
86            intensity.push(xi * yj);
87        }
88    }
89
90    let dataset = DataFrame::new(vec![
91        Column::new("x".into(), x),
92        Column::new("y".into(), y),
93        Column::new("z".into(), z),
94        Column::new("intensity".into(), intensity),
95    ])
96    .unwrap();
97
98    Mesh3D::builder()
99        .data(&dataset)
100        .x("x")
101        .y("y")
102        .z("z")
103        .intensity("intensity")
104        .intensity_mode(IntensityMode::Vertex)
105        .color_scale(Palette::Viridis)
106        .reverse_scale(false)
107        .show_scale(true)
108        .color_bar(
109            &ColorBar::new()
110                .x(0.85) // Move color bar very close to the plot
111                .title("Intensity"),
112        )
113        .opacity(0.95)
114        .plot_title(
115            Text::from("Mesh3D with Intensity Coloring")
116                .font("Arial")
117                .size(20),
118        )
119        .build()
120        .plot();
121}
Source

pub fn y(self, y: f64) -> Self

Sets the y-coordinate position of the text.

§Argument
  • y - A f64 value specifying the vertical position.

Trait Implementations§

Source§

impl Clone for ColorBar

Source§

fn clone(&self) -> ColorBar

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Default for ColorBar

Source§

fn default() -> ColorBar

Returns the “default value” for a type. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> DynClone for T
where T: Clone,

Source§

fn __clone_box(&self, _: Private) -> *mut ()

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> Key for T
where T: Clone,

Source§

fn align() -> usize

The alignment necessary for the key. Must return a power of two.
Source§

fn size(&self) -> usize

The size of the key in bytes.
Source§

unsafe fn init(&self, ptr: *mut u8)

Initialize the key in the given memory location. Read more
Source§

unsafe fn get<'a>(ptr: *const u8) -> &'a T

Get a reference to the key from the given memory location. Read more
Source§

unsafe fn drop_in_place(ptr: *mut u8)

Drop the key in place. Read more
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<R, P> ReadPrimitive<R> for P
where R: Read + ReadEndian<P>, P: Default,

Source§

fn read_from_little_endian(read: &mut R) -> Result<Self, Error>

Read this value from the supplied reader. Same as ReadEndian::read_from_little_endian().
Source§

fn read_from_big_endian(read: &mut R) -> Result<Self, Error>

Read this value from the supplied reader. Same as ReadEndian::read_from_big_endian().
Source§

fn read_from_native_endian(read: &mut R) -> Result<Self, Error>

Read this value from the supplied reader. Same as ReadEndian::read_from_native_endian().
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

impl<T> ErasedDestructor for T
where T: 'static,

Source§

impl<T> PlanCallbackArgs for T

Source§

impl<T> PlanCallbackOut for T