pub struct SurfacePlot { /* private fields */ }Expand description
A structure representing a 3-D surface plot.
The SurfacePlot struct is designed to build and customize 3-dimensional
surface visualizations. It supports fine-grained control over the color
mapping of z values, interactive color bars, lighting effects that enhance
depth perception, and global opacity settings. Layout elements such as the
plot title and axis labels can also be configured through the builder API,
allowing you to embed the surface seamlessly in complex dashboards.
§Arguments
data– A reference to theDataFramethat supplies the data. It must contain three numeric columns whose names are given byx,yandz.x– The column name to be used for the x-axis coordinates. Each distinct x value becomes a row in the underlying z grid.y– The column name to be used for the y-axis coordinates. Each distinct y value becomes a column in the z grid.z– The column name that provides the z-axis heights. These values are mapped to colors according tocolor_scale/reverse_scale.color_bar– An optional Reference to aColorBardescribing the appearance of the color legend (length, tick formatting, border, etc.).color_scale– An optionalPalettethat defines the color gradient (e.g. Viridis, Cividis).reverse_scale– An optionalboolindicating whether the chosencolor_scaleshould run in the opposite direction.show_scale– An optionalboolthat toggles the visibility of the color bar. Useful when you have multiple surfaces that share an external legend.lighting– An optional Reference to aLightingstruct that specifies ambient, diffuse, specular components, roughness, fresnel and light position. Leaving itNoneapplies Plotly’s default Phong shading.opacity– An optionalf64in[0.0, 1.0]that sets the global transparency of the surface (1 = opaque, 0 = fully transparent).plot_title– An optionalTextthat customizes the title (content, font, size, alignment).
§Example
use ndarray::Array;
use plotlars::{ColorBar, Lighting, Palette, Plot, SurfacePlot, Text};
use polars::prelude::*;
use std::iter;
let n: usize = 100;
let x_base: Vec<f64> = Array::linspace(-10.0, 10.0, n).into_raw_vec();
let y_base: Vec<f64> = Array::linspace(-10.0, 10.0, n).into_raw_vec();
let x = x_base
.iter()
.flat_map(|&xi| iter::repeat_n(xi, n))
.collect::<Vec<_>>();
let y = y_base
.iter()
.cycle()
.take(n * n)
.cloned()
.collect::<Vec<_>>();
let z = x_base
.iter()
.flat_map(|i| {
y_base
.iter()
.map(|j| 1.0 / (j * j + 5.0) * j.sin() + 1.0 / (i * i + 5.0) * i.cos())
.collect::<Vec<_>>()
})
.collect::<Vec<_>>();
let dataset = df![
"x" => &x,
"y" => &y,
"z" => &z,
]
.unwrap();
SurfacePlot::builder()
.data(&dataset)
.x("x")
.y("y")
.z("z")
.plot_title(
Text::from("Surface Plot")
.font("Arial")
.size(18),
)
.color_bar(
&ColorBar::new()
.border_width(1),
)
.color_scale(Palette::Cividis)
.reverse_scale(true)
.opacity(0.5)
.build()
.plot();
Implementations§
Source§impl SurfacePlot
impl SurfacePlot
Trait Implementations§
Source§impl Clone for SurfacePlot
impl Clone for SurfacePlot
Source§fn clone(&self) -> SurfacePlot
fn clone(&self) -> SurfacePlot
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreAuto Trait Implementations§
impl Freeze for SurfacePlot
impl !RefUnwindSafe for SurfacePlot
impl !Send for SurfacePlot
impl !Sync for SurfacePlot
impl Unpin for SurfacePlot
impl !UnwindSafe for SurfacePlot
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
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