pub struct PlotConfig<'a> { /* private fields */ }Expand description
Configuration for plotting.
Implementations§
Source§impl<'a> PlotConfig<'a>
impl<'a> PlotConfig<'a>
Sourcepub fn new(
title: &'a str,
caption: &'a str,
x_label: &'a str,
y_label: &'a str,
scale: Scale,
) -> PlotConfig<'a>
pub fn new( title: &'a str, caption: &'a str, x_label: &'a str, y_label: &'a str, scale: Scale, ) -> PlotConfig<'a>
Crate a new PlotConfig.
Prefer using PlotConfig::default and then setting the desired values.
Sourcepub fn with_x_label(self, x_label: &'a str) -> PlotConfig<'a>
pub fn with_x_label(self, x_label: &'a str) -> PlotConfig<'a>
Sets the x label for the plot.
Sourcepub fn with_y_label(self, y_label: &'a str) -> PlotConfig<'a>
pub fn with_y_label(self, y_label: &'a str) -> PlotConfig<'a>
Sets the y label for the plot.
Sourcepub fn with_title(self, title: &'a str) -> PlotConfig<'a>
pub fn with_title(self, title: &'a str) -> PlotConfig<'a>
Sets the title for the plot.
Examples found in repository?
examples/sorting/main.rs (line 46)
17fn main() {
18 // Create a distribution for the length of the vectors
19 // Here we use an exponential distribution with a minimum of 1000 and a maximum of 500_000
20 let length_distribution = Exponential::new(1000..=500_000);
21
22 // Create the builder for the vectors
23 let vector_builder = InputBuilder::new(length_distribution, ());
24
25 // Build the vectors
26 // Here we build 2000 vectors, 10 of each length
27 let mut vectors = vector_builder.build_with_repetitions(200, 10);
28
29 // Create a slice of the algorithms we want to measure
30 let algorithms: &[(fn(&mut input::InputVec), &str); 2] = &[
31 (merge_sort_input, "Merge sort"),
32 (quick_sort_input, "Quick sort"),
33 ];
34
35 // Measure the algorithms on the vectors, given a relative error of 0.001
36 let results = measure_mut(&mut vectors, algorithms, 0.001);
37
38 let result_clone = results.clone();
39 // Serialize the results to a json file
40 result_clone.serialize_json("results.json");
41
42 let file_name = "results/sorting.svg";
43
44 // Plot the results
45 let config = PlotConfig::default()
46 .with_title("Sorting algorithms")
47 .with_caption("The time plot of sorting algorithms");
48
49 time_plot(file_name, results, &config);
50}More examples
examples/search/main.rs (line 52)
19fn main() {
20 // Create a distribution for the length of the vectors
21 // Here we use an uniform distribution with a minimum of 10 and a maximum of 100_000
22 let length_distribution = Uniform::new(10..=100_000);
23
24 // Create the builder for the vectors
25 // Here we choose to use the fast generator method in order to generate ordered vectors
26 let vector_builder = InputBuilder::new(length_distribution, Generator::Fast);
27
28 // Build 200 vectors
29 let vectors = vector_builder.build(200);
30
31 // Create a slice of the algorithms we want to measure
32 let algorithms: &[(fn(&input::SearchInput) -> Option<usize>, &str); 2] = &[
33 (linear_search_input, "Linear search"),
34 (binary_search_input, "Binary search"),
35 ];
36
37 // Measure the algorithms on the vectors, given a relative error of 0.001
38 let results = measure(&vectors, algorithms, 0.001);
39
40 let file_name = "results/search.svg";
41
42 // Here we print the linear regression of the log-log scale of the results
43 for result in results.clone().measurements {
44 let log_linear_regression = result.log_log_scale().linear_regression();
45 println!(
46 "{}: {} * x + {}",
47 result.algorithm_name, log_linear_regression.0, log_linear_regression.1
48 )
49 }
50
51 let config = PlotConfig::default()
52 .with_title("Search in an ordered vector")
53 .with_caption("The time plot of searching algorithms in an ordered vector");
54
55 // Plot the results
56 time_plot(file_name, results, &config);
57}Sourcepub fn with_caption(self, caption: &'a str) -> PlotConfig<'a>
pub fn with_caption(self, caption: &'a str) -> PlotConfig<'a>
Sets the caption for the plot.
Examples found in repository?
examples/sorting/main.rs (line 47)
17fn main() {
18 // Create a distribution for the length of the vectors
19 // Here we use an exponential distribution with a minimum of 1000 and a maximum of 500_000
20 let length_distribution = Exponential::new(1000..=500_000);
21
22 // Create the builder for the vectors
23 let vector_builder = InputBuilder::new(length_distribution, ());
24
25 // Build the vectors
26 // Here we build 2000 vectors, 10 of each length
27 let mut vectors = vector_builder.build_with_repetitions(200, 10);
28
29 // Create a slice of the algorithms we want to measure
30 let algorithms: &[(fn(&mut input::InputVec), &str); 2] = &[
31 (merge_sort_input, "Merge sort"),
32 (quick_sort_input, "Quick sort"),
33 ];
34
35 // Measure the algorithms on the vectors, given a relative error of 0.001
36 let results = measure_mut(&mut vectors, algorithms, 0.001);
37
38 let result_clone = results.clone();
39 // Serialize the results to a json file
40 result_clone.serialize_json("results.json");
41
42 let file_name = "results/sorting.svg";
43
44 // Plot the results
45 let config = PlotConfig::default()
46 .with_title("Sorting algorithms")
47 .with_caption("The time plot of sorting algorithms");
48
49 time_plot(file_name, results, &config);
50}More examples
examples/search/main.rs (line 53)
19fn main() {
20 // Create a distribution for the length of the vectors
21 // Here we use an uniform distribution with a minimum of 10 and a maximum of 100_000
22 let length_distribution = Uniform::new(10..=100_000);
23
24 // Create the builder for the vectors
25 // Here we choose to use the fast generator method in order to generate ordered vectors
26 let vector_builder = InputBuilder::new(length_distribution, Generator::Fast);
27
28 // Build 200 vectors
29 let vectors = vector_builder.build(200);
30
31 // Create a slice of the algorithms we want to measure
32 let algorithms: &[(fn(&input::SearchInput) -> Option<usize>, &str); 2] = &[
33 (linear_search_input, "Linear search"),
34 (binary_search_input, "Binary search"),
35 ];
36
37 // Measure the algorithms on the vectors, given a relative error of 0.001
38 let results = measure(&vectors, algorithms, 0.001);
39
40 let file_name = "results/search.svg";
41
42 // Here we print the linear regression of the log-log scale of the results
43 for result in results.clone().measurements {
44 let log_linear_regression = result.log_log_scale().linear_regression();
45 println!(
46 "{}: {} * x + {}",
47 result.algorithm_name, log_linear_regression.0, log_linear_regression.1
48 )
49 }
50
51 let config = PlotConfig::default()
52 .with_title("Search in an ordered vector")
53 .with_caption("The time plot of searching algorithms in an ordered vector");
54
55 // Plot the results
56 time_plot(file_name, results, &config);
57}Sourcepub fn with_scale(self, scale: Scale) -> PlotConfig<'a>
pub fn with_scale(self, scale: Scale) -> PlotConfig<'a>
Sets the scale for the plot.
Trait Implementations§
Source§impl<'a> Default for PlotConfig<'a>
impl<'a> Default for PlotConfig<'a>
Source§fn default() -> PlotConfig<'a>
fn default() -> PlotConfig<'a>
Returns the “default value” for a type. Read more
Auto Trait Implementations§
impl<'a> Freeze for PlotConfig<'a>
impl<'a> RefUnwindSafe for PlotConfig<'a>
impl<'a> Send for PlotConfig<'a>
impl<'a> Sync for PlotConfig<'a>
impl<'a> Unpin for PlotConfig<'a>
impl<'a> UnwindSafe for PlotConfig<'a>
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