use plotters::coord::Shift; use plotters::prelude::*; fn draw_chart(root: &DrawingArea) -> DrawResult<(), B> { let mut chart = ChartBuilder::on(root) .caption( "Relative Size Example", ("sans-serif", (5).percent_height()), ) .x_label_area_size((10).percent_height()) .y_label_area_size((10).percent_width()) .margin(5) .build_cartesian_2d(-5.0..5.0, -1.0..1.0)?; chart .configure_mesh() .disable_x_mesh() .disable_y_mesh() .label_style(("sans-serif", (3).percent_height())) .draw()?; chart.draw_series(LineSeries::new( (0..1000) .map(|x| x as f64 / 100.0 - 5.0) .map(|x| (x, x.sin())), &RED, ))?; Ok(()) } fn main() -> Result<(), Box> { let root = BitMapBackend::new("plotters-doc-data/relative_size.png", (1024, 768)).into_drawing_area(); root.fill(&WHITE)?; let (left, right) = root.split_horizontally((70).percent_width()); draw_chart(&left)?; let (upper, lower) = right.split_vertically(300); draw_chart(&upper)?; draw_chart(&lower)?; draw_chart(&root.shrink((200, 200), (150, 100)))?; Ok(()) } #[test] fn entry_point() { main().unwrap() }