pub struct Plot {
pub data: Vec<(f64, f64)>,
pub line_style: Option<LineStyle>,
pub point_style: Option<PointStyle>,
pub legend: Option<String>,
}
Expand description
Representation of any plot with points in the XY plane, visualized as points and/or with lines in-between.
Fields§
§data: Vec<(f64, f64)>
§line_style: Option<LineStyle>
None if no lines should be displayed
point_style: Option<PointStyle>
None if no points should be displayed
legend: Option<String>
Implementations§
Source§impl Plot
impl Plot
Sourcepub fn new(data: Vec<(f64, f64)>) -> Self
pub fn new(data: Vec<(f64, f64)>) -> Self
Examples found in repository?
More examples
examples/with_grid.rs (line 16)
12fn render_line_chart<S>(filename: S)
13where
14 S: AsRef<str>,
15{
16 let l1 = Plot::new(vec![(0., 1.), (2., 1.5), (3., 1.2), (4., 1.1)])
17 .line_style(LineStyle::new().colour("burlywood"));
18 let mut v = ContinuousView::new().add(l1);
19 v.add_grid(Grid::new(3, 8));
20 Page::single(&v)
21 .save(filename.as_ref())
22 .expect("saving svg");
23}
examples/line_and_point_svg.rs (line 7)
6fn main() {
7 let l1 = Plot::new(vec![(0., 1.), (2., 1.5), (3., 1.2), (4., 1.1)])
8 .line_style(
9 LineStyle::new()
10 .colour("burlywood")
11 .linejoin(LineJoin::Round),
12 )
13 .point_style(PointStyle::new());
14
15 let v = ContinuousView::new().add(l1);
16 Page::single(&v)
17 .save("line_and_point.svg")
18 .expect("saving svg");
19}
examples/scatter_text.rs (line 15)
6fn main() {
7 let data = vec![
8 (-3.0, 2.3),
9 (-1.6, 5.3),
10 (0.3, 0.7),
11 (4.3, -1.4),
12 (6.4, 4.3),
13 (8.5, 3.7),
14 ];
15 let s1 = Plot::new(data).point_style(PointStyle::new().marker(PointMarker::Circle));
16 let s2 = Plot::new(vec![(-1.4, 2.5), (7.2, -0.3)])
17 .point_style(PointStyle::new().marker(PointMarker::Square));
18
19 let v = ContinuousView::new()
20 .add(s1)
21 .add(s2)
22 .x_range(-5., 10.)
23 .y_range(-2., 6.)
24 .x_label("Some varying variable")
25 .y_label("The response of something");
26
27 println!("{}", Page::single(&v).dimensions(80, 30).to_text().unwrap());
28}
examples/scatter_svg.rs (line 18)
6fn main() {
7 // Scatter plots expect a list of pairs
8 let data1 = vec![
9 (-3.0, 2.3),
10 (-1.6, 5.3),
11 (0.3, 0.7),
12 (4.3, -1.4),
13 (6.4, 4.3),
14 (8.5, 3.7),
15 ];
16
17 // We create our scatter plot from the data
18 let s1: Plot = Plot::new(data1).point_style(
19 PointStyle::new()
20 .marker(PointMarker::Square) // setting the marker to be a square
21 .colour("#DD3355"),
22 ); // and a custom colour
23
24 // We can plot multiple data sets in the same view
25 let data2 = vec![(-1.4, 2.5), (7.2, -0.3)];
26 let s2: Plot = Plot::new(data2).point_style(
27 PointStyle::new() // uses the default marker
28 .colour("#35C788"),
29 ); // and a different colour
30
31 // The 'view' describes what set of data is drawn
32 let v = ContinuousView::new()
33 .add(s1)
34 .add(s2)
35 .x_range(-5., 10.)
36 .y_range(-2., 6.)
37 .x_label("Some varying variable")
38 .y_label("The response of something");
39
40 // A page with a single view is then saved to an SVG file
41 Page::single(&v).save("scatter.svg").unwrap();
42}
Sourcepub fn from_function<F: Fn(f64) -> f64>(f: F, lower: f64, upper: f64) -> Self
pub fn from_function<F: Fn(f64) -> f64>(f: F, lower: f64, upper: f64) -> Self
Examples found in repository?
examples/function_svg.rs (line 8)
6fn main() {
7 let f1 =
8 Plot::from_function(|x| x * 5., 0., 10.).line_style(LineStyle::new().colour("burlywood"));
9 let f2 = Plot::from_function(|x| x.powi(2), 0., 10.)
10 .line_style(LineStyle::new().colour("darkolivegreen").width(2.));
11 let f3 = Plot::from_function(|x| x.sqrt() * 20., 0., 10.)
12 .line_style(LineStyle::new().colour("brown").width(1.));
13
14 let v = ContinuousView::new().add(f1).add(f2).add(f3);
15
16 Page::single(&v).save("function.svg").expect("saving svg");
17}
Sourcepub fn line_style(self, other: LineStyle) -> Self
pub fn line_style(self, other: LineStyle) -> Self
Examples found in repository?
More examples
examples/with_grid.rs (line 17)
12fn render_line_chart<S>(filename: S)
13where
14 S: AsRef<str>,
15{
16 let l1 = Plot::new(vec![(0., 1.), (2., 1.5), (3., 1.2), (4., 1.1)])
17 .line_style(LineStyle::new().colour("burlywood"));
18 let mut v = ContinuousView::new().add(l1);
19 v.add_grid(Grid::new(3, 8));
20 Page::single(&v)
21 .save(filename.as_ref())
22 .expect("saving svg");
23}
examples/line_and_point_svg.rs (lines 8-12)
6fn main() {
7 let l1 = Plot::new(vec![(0., 1.), (2., 1.5), (3., 1.2), (4., 1.1)])
8 .line_style(
9 LineStyle::new()
10 .colour("burlywood")
11 .linejoin(LineJoin::Round),
12 )
13 .point_style(PointStyle::new());
14
15 let v = ContinuousView::new().add(l1);
16 Page::single(&v)
17 .save("line_and_point.svg")
18 .expect("saving svg");
19}
examples/function_svg.rs (line 8)
6fn main() {
7 let f1 =
8 Plot::from_function(|x| x * 5., 0., 10.).line_style(LineStyle::new().colour("burlywood"));
9 let f2 = Plot::from_function(|x| x.powi(2), 0., 10.)
10 .line_style(LineStyle::new().colour("darkolivegreen").width(2.));
11 let f3 = Plot::from_function(|x| x.sqrt() * 20., 0., 10.)
12 .line_style(LineStyle::new().colour("brown").width(1.));
13
14 let v = ContinuousView::new().add(f1).add(f2).add(f3);
15
16 Page::single(&v).save("function.svg").expect("saving svg");
17}
Sourcepub fn point_style(self, other: PointStyle) -> Self
pub fn point_style(self, other: PointStyle) -> Self
Examples found in repository?
examples/line_and_point_svg.rs (line 13)
6fn main() {
7 let l1 = Plot::new(vec![(0., 1.), (2., 1.5), (3., 1.2), (4., 1.1)])
8 .line_style(
9 LineStyle::new()
10 .colour("burlywood")
11 .linejoin(LineJoin::Round),
12 )
13 .point_style(PointStyle::new());
14
15 let v = ContinuousView::new().add(l1);
16 Page::single(&v)
17 .save("line_and_point.svg")
18 .expect("saving svg");
19}
More examples
examples/scatter_text.rs (line 15)
6fn main() {
7 let data = vec![
8 (-3.0, 2.3),
9 (-1.6, 5.3),
10 (0.3, 0.7),
11 (4.3, -1.4),
12 (6.4, 4.3),
13 (8.5, 3.7),
14 ];
15 let s1 = Plot::new(data).point_style(PointStyle::new().marker(PointMarker::Circle));
16 let s2 = Plot::new(vec![(-1.4, 2.5), (7.2, -0.3)])
17 .point_style(PointStyle::new().marker(PointMarker::Square));
18
19 let v = ContinuousView::new()
20 .add(s1)
21 .add(s2)
22 .x_range(-5., 10.)
23 .y_range(-2., 6.)
24 .x_label("Some varying variable")
25 .y_label("The response of something");
26
27 println!("{}", Page::single(&v).dimensions(80, 30).to_text().unwrap());
28}
examples/scatter_svg.rs (lines 18-22)
6fn main() {
7 // Scatter plots expect a list of pairs
8 let data1 = vec![
9 (-3.0, 2.3),
10 (-1.6, 5.3),
11 (0.3, 0.7),
12 (4.3, -1.4),
13 (6.4, 4.3),
14 (8.5, 3.7),
15 ];
16
17 // We create our scatter plot from the data
18 let s1: Plot = Plot::new(data1).point_style(
19 PointStyle::new()
20 .marker(PointMarker::Square) // setting the marker to be a square
21 .colour("#DD3355"),
22 ); // and a custom colour
23
24 // We can plot multiple data sets in the same view
25 let data2 = vec![(-1.4, 2.5), (7.2, -0.3)];
26 let s2: Plot = Plot::new(data2).point_style(
27 PointStyle::new() // uses the default marker
28 .colour("#35C788"),
29 ); // and a different colour
30
31 // The 'view' describes what set of data is drawn
32 let v = ContinuousView::new()
33 .add(s1)
34 .add(s2)
35 .x_range(-5., 10.)
36 .y_range(-2., 6.)
37 .x_label("Some varying variable")
38 .y_label("The response of something");
39
40 // A page with a single view is then saved to an SVG file
41 Page::single(&v).save("scatter.svg").unwrap();
42}
pub fn legend(self, legend: String) -> Self
Trait Implementations§
Source§impl ContinuousRepresentation for Plot
impl ContinuousRepresentation for Plot
Source§fn range(&self, dim: u32) -> (f64, f64)
fn range(&self, dim: u32) -> (f64, f64)
The maximum range in each dimension. Used for auto-scaling axes.
fn to_svg( &self, x_axis: &ContinuousAxis, y_axis: &ContinuousAxis, face_width: f64, face_height: f64, ) -> Group
Source§fn legend_svg(&self) -> Option<Group>
fn legend_svg(&self) -> Option<Group>
Returns None if no legend has been specified for this representation
fn to_text( &self, x_axis: &ContinuousAxis, y_axis: &ContinuousAxis, face_width: u32, face_height: u32, ) -> String
Auto Trait Implementations§
impl Freeze for Plot
impl RefUnwindSafe for Plot
impl Send for Plot
impl Sync for Plot
impl Unpin for Plot
impl UnwindSafe for Plot
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