diff options
Diffstat (limited to 'vendor/plotters/examples')
-rw-r--r-- | vendor/plotters/examples/3d-plot2.rs | 4 | ||||
-rw-r--r-- | vendor/plotters/examples/colormaps.rs | 69 | ||||
-rw-r--r-- | vendor/plotters/examples/mandelbrot.rs | 2 |
3 files changed, 71 insertions, 4 deletions
diff --git a/vendor/plotters/examples/3d-plot2.rs b/vendor/plotters/examples/3d-plot2.rs index 0b5ca2131..b7138f2c5 100644 --- a/vendor/plotters/examples/3d-plot2.rs +++ b/vendor/plotters/examples/3d-plot2.rs @@ -36,9 +36,7 @@ fn main() -> Result<(), Box<dyn std::error::Error>> { (-15..=15).map(|x| x as f64 / 5.0), pdf, ) - .style_func(&|&v| { - (&HSLColor(240.0 / 360.0 - 240.0 / 360.0 * v / 5.0, 1.0, 0.7)).into() - }), + .style_func(&|&v| (VulcanoHSL::get_color(v / 5.0)).into()), )?; root.present()?; diff --git a/vendor/plotters/examples/colormaps.rs b/vendor/plotters/examples/colormaps.rs new file mode 100644 index 000000000..4c8cc4d44 --- /dev/null +++ b/vendor/plotters/examples/colormaps.rs @@ -0,0 +1,69 @@ +use plotters::prelude::*; + +const OUT_FILE_NAME: &'static str = "plotters-doc-data/colormaps.png"; + +fn main() -> Result<(), Box<dyn std::error::Error>> { + let colormaps_rgb: [(Box<dyn ColorMap<RGBColor>>, &str); 4] = [ + (Box::new(ViridisRGB {}), "Viridis"), + (Box::new(BlackWhite {}), "BlackWhite"), + (Box::new(Bone {}), "Bone"), + (Box::new(Copper {}), "Copper"), + ]; + + let colormaps_hsl: [(Box<dyn ColorMap<HSLColor>>, &str); 2] = [ + (Box::new(MandelbrotHSL {}), "MandelbrotHSL"), + (Box::new(VulcanoHSL {}), "VulcanoHSL"), + ]; + + let size_x: i32 = 800; + let n_colormaps = colormaps_rgb.len() + colormaps_hsl.len(); + let size_y = 200 + n_colormaps as u32 * 100; + let root = BitMapBackend::new(OUT_FILE_NAME, (size_x as u32, size_y)).into_drawing_area(); + + root.fill(&WHITE)?; + + let mut chart = ChartBuilder::on(&root) + .caption("Demonstration of predefined colormaps", ("sans-serif", 20)) + .build_cartesian_2d( + -150.0..size_x as f32 + 50.0, + 0.0..3.0 * (n_colormaps as f32), + )?; + + use plotters::style::text_anchor::*; + let centered = Pos::new(HPos::Center, VPos::Center); + let label_style = TextStyle::from(("monospace", 14.0).into_font()).pos(centered); + + let mut colormap_counter = 0; + macro_rules! plot_colormaps( + ($colormap:expr) => { + for (colormap, colormap_name) in $colormap.iter() { + chart.draw_series( + (0..size_x as i32).map(|x| { + Rectangle::new([ + (x as f32, 3.0*(n_colormaps - 1 - colormap_counter) as f32 + 0.5), + (x as f32+1.0, 3.0*(n_colormaps - 1 - colormap_counter) as f32 + 2.5) + ], + colormap.get_color_normalized(x as f32, 0.0, size_x as f32).filled()) + }) + )?; + chart.draw_series( + [Text::new(colormap_name.to_owned(), (-75.0, 3.0*(n_colormaps-1-colormap_counter) as f32 + 1.5), &label_style)] + )?; + colormap_counter+=1; + } + } + ); + + plot_colormaps!(colormaps_rgb); + plot_colormaps!(colormaps_hsl); + + // To avoid the IO failure being ignored silently, we manually call the present function + root.present().expect("Unable to write result to file, please make sure 'plotters-doc-data' dir exists under current dir"); + println!("Result has been saved to {}", OUT_FILE_NAME); + + Ok(()) +} +#[test] +fn entry_point() { + main().unwrap() +} diff --git a/vendor/plotters/examples/mandelbrot.rs b/vendor/plotters/examples/mandelbrot.rs index 413c319c6..b0d5799b2 100644 --- a/vendor/plotters/examples/mandelbrot.rs +++ b/vendor/plotters/examples/mandelbrot.rs @@ -28,7 +28,7 @@ fn main() -> Result<(), Box<dyn std::error::Error>> { for (x, y, c) in mandelbrot_set(xr, yr, (pw as usize, ph as usize), 100) { if c != 100 { - plotting_area.draw_pixel((x, y), &HSLColor(c as f64 / 100.0, 1.0, 0.5))?; + plotting_area.draw_pixel((x, y), &MandelbrotHSL::get_color(c as f64 / 100.0))?; } else { plotting_area.draw_pixel((x, y), &BLACK)?; } |