plotters-statistical 0.2.0

Statistical chart primitives (box, violin, ROC, PR, regularization-path, residual) as native plotters series
Documentation
//! Normal Q–Q plot rendered to `qq_plot.svg`. The sample is deliberately
//! right-skewed, so the points bend away from the reference line.

use plotters::prelude::*;
use plotters_statistical::QqPlot;

fn main() -> Result<(), Box<dyn std::error::Error>> {
    let root = SVGBackend::new("qq_plot.svg", (600, 600)).into_drawing_area();
    root.fill(&WHITE)?;

    // Right-skewed sample: exponential-like via -ln(1 - u).
    let n = 150;
    let data: Vec<f64> = (0..n)
        .map(|i| {
            let u = (i as f64 + 0.5) / n as f64;
            -(1.0 - u).ln()
        })
        .collect();

    let mut chart = ChartBuilder::on(&root)
        .caption("Normal Q–Q (right-skewed sample)", ("sans-serif", 22))
        .margin(20)
        .set_label_area_size(LabelAreaPosition::Left, 50)
        .set_label_area_size(LabelAreaPosition::Bottom, 45)
        .build_cartesian_2d(-3f64..3f64, -0.5f64..5f64)?;
    chart
        .configure_mesh()
        .x_desc("theoretical quantiles")
        .y_desc("sample quantiles")
        .draw()?;

    chart.draw_series(std::iter::once(QqPlot::from_data(&data)?))?;
    root.present()?;
    println!("wrote qq_plot.svg");
    Ok(())
}