pub struct LinePlot { /* private fields */ }Expand description
A structure representing a line plot.
The LinePlot struct facilitates the creation and customization of line plots with various options
for data selection, layout configuration, and aesthetic adjustments. It supports the addition of multiple
lines, customization of marker shapes, line styles, colors, opacity settings, and comprehensive layout
customization including titles, axes, and legends.
§Arguments
data- A reference to theDataFramecontaining the data to be plotted.x- A string slice specifying the column name to be used for the x-axis (independent variable).y- A string slice specifying the column name to be used for the y-axis (dependent variable).additional_lines- An optional vector of string slices specifying additional y-axis columns to be plotted as lines.size- An optionalusizespecifying the size of the markers or the thickness of the lines.color- An optionalRgbvalue specifying the color of the markers and lines. This is used whenadditional_linesis not specified.colors- An optional vector ofRgbvalues specifying the colors for the markers and lines. This is used whenadditional_linesis specified to differentiate between multiple lines.with_shape- An optionalboolindicating whether to display markers with shapes on the plot.shape- An optionalShapespecifying the shape of the markers.shapes- An optional vector ofShapevalues specifying multiple shapes for the markers when plotting multiple lines.width- An optionalf64specifying the width of the plotted lines.line- An optionalLinespecifying the type of the line (e.g., solid, dashed). This is used whenadditional_linesis not specified.lines- An optional vector ofLineenums specifying the types of lines (e.g., solid, dashed) for each plotted line. This is used whenadditional_linesis specified to differentiate between multiple lines.plot_title- An optionalTextstruct specifying the title of the plot.x_title- An optionalTextstruct specifying the title of the x-axis.y_title- An optionalTextstruct specifying the title of the y-axis.legend_title- An optionalTextstruct specifying the title of the legend.x_axis- An optional reference to anAxisstruct for customizing the x-axis.y_axis- An optional reference to anAxisstruct for customizing the y-axis.legend- An optional reference to aLegendstruct for customizing the legend of the plot (e.g., positioning, font, etc.).
§Example
use ndarray::Array;
use polars::prelude::*;
use plotlars::{Axis, Line, LinePlot, Plot, Rgb, Text, TickDirection};
let x_values: Array<f64, _> = Array::linspace(0.0, 2.0 * std::f64::consts::PI, 1000);
let sine_values = x_values.mapv(f64::sin).to_vec();
let cosine_values = x_values.mapv(f64::cos).to_vec();
let x_values = x_values.to_vec();
let dataset = DataFrame::new(vec![
Column::new("x".into(), x_values),
Column::new("sine".into(), sine_values),
Column::new("cosine".into(), cosine_values),
])
.unwrap();
LinePlot::builder()
.data(&dataset)
.x("x")
.y("sine")
.additional_lines(vec!["cosine"])
.colors(vec![
Rgb(255, 0, 0),
Rgb(0, 255, 0),
])
.lines(vec![Line::Solid, Line::Dot])
.width(3.0)
.with_shape(false)
.plot_title(
Text::from("Line Plot")
.font("Arial")
.size(18)
)
.legend_title(
Text::from("series")
.font("Arial")
.size(15)
)
.x_axis(
&Axis::new()
.tick_direction(TickDirection::OutSide)
.axis_position(0.5)
.tick_values(vec![
0.5 * std::f64::consts::PI,
std::f64::consts::PI,
1.5 * std::f64::consts::PI,
2.0 * std::f64::consts::PI,
])
.tick_labels(vec!["π/2", "π", "3π/2", "2π"])
)
.y_axis(
&Axis::new()
.tick_direction(TickDirection::OutSide)
.tick_values(vec![-1.0, 0.0, 1.0])
.tick_labels(vec!["-1", "0", "1"])
)
.build()
.plot();
Implementations§
Source§impl LinePlot
impl LinePlot
Sourcepub fn builder<'f1, 'f2, 'f3, 'f4, 'f5, 'f6, 'f7, 'f8>() -> LinePlotBuilder<'f1, 'f2, 'f3, 'f4, 'f5, 'f6, 'f7, 'f8>
pub fn builder<'f1, 'f2, 'f3, 'f4, 'f5, 'f6, 'f7, 'f8>() -> LinePlotBuilder<'f1, 'f2, 'f3, 'f4, 'f5, 'f6, 'f7, 'f8>
Examples found in repository?
examples/lineplot.rs (line 16)
6fn main() {
7 let x_values = Array::linspace(0.0, 2.0 * std::f64::consts::PI, 1000).to_vec();
8
9 let dataset = df![
10 "x" => &x_values,
11 "sine" => &x_values.iter().map(|arg0: &f64| f64::sin(*arg0)).collect::<Vec<_>>(),
12 "cosine" => &x_values.iter().map(|arg0: &f64| f64::cos(*arg0)).collect::<Vec<_>>(),
13 ]
14 .unwrap();
15
16 LinePlot::builder()
17 .data(&dataset)
18 .x("x")
19 .y("sine")
20 .additional_lines(vec!["cosine"])
21 .colors(vec![Rgb(255, 0, 0), Rgb(0, 255, 0)])
22 .lines(vec![Line::Solid, Line::Dot])
23 .width(3.0)
24 .with_shape(false)
25 .plot_title(Text::from("Line Plot").font("Arial").size(18))
26 .legend_title(Text::from("series").font("Arial").size(15))
27 .x_axis(
28 &Axis::new()
29 .tick_direction(TickDirection::OutSide)
30 .axis_position(0.5)
31 .tick_values(vec![
32 0.5 * std::f64::consts::PI,
33 std::f64::consts::PI,
34 1.5 * std::f64::consts::PI,
35 2.0 * std::f64::consts::PI,
36 ])
37 .tick_labels(vec!["π/2", "π", "3π/2", "2π"]),
38 )
39 .y_axis(
40 &Axis::new()
41 .tick_direction(TickDirection::OutSide)
42 .tick_values(vec![-1.0, 0.0, 1.0])
43 .tick_labels(vec!["-1", "0", "1"]),
44 )
45 .build()
46 .plot();
47}Trait Implementations§
Auto Trait Implementations§
impl Freeze for LinePlot
impl !RefUnwindSafe for LinePlot
impl !Send for LinePlot
impl !Sync for LinePlot
impl Unpin for LinePlot
impl !UnwindSafe for LinePlot
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