velociplot 0.0.1

Fast, publication-quality scientific plotting library - Quick, precise, and deadly effective
Documentation

Velociplot πŸ¦–

Scientific plotting at velociraptor speed

velociplot (Velociraptor + plot) is a fast, publication-quality plotting library for Rust. Quick, precise, and deadly effective for creating scientific figures.

🎯 What is velociplot?

Veloci-plot = Velocity + plot
Like a velociraptor: quick, precise, and deadly effective

A pure Rust plotting library designed for scientists, engineers, and developers who need high-performance, publication-ready visualizations.

✨ Features (Planned)

  • πŸ¦– Blazingly Fast - Plot millions of points in milliseconds
  • πŸ“Š Publication Quality - LaTeX math, precise DPI control, vector output
  • πŸ“ Scientific Plots - Line, scatter, histogram, heatmap, contour, 3D surface
  • 🎨 Beautiful Defaults - Perceptually uniform colormaps, colorblind-friendly
  • πŸ“ Multiple Formats - PDF, SVG, PNG, EPS (vector + raster)
  • πŸ”§ Ergonomic API - Simple for basics, powerful for complex figures
  • πŸš€ Pure Rust - No Python/matplotlib required

🚧 Status

Work in Progress - This project is in early development.

Current version: 0.1.0-alpha

πŸŽ“ Quick Example (Planned API)

use velociplot::prelude::*;

// Simple plot
plot()
    .line(x, y)
    .xlabel("Time (s)")
    .ylabel("Temperature (K)")
    .save("figure.pdf")?;

// Publication-quality figure
Figure::new()
    .size_inches(3.5, 2.5)  // Single-column width
    .dpi(300)
    .add_subplot()
        .line(x, y)
            .label("Experimental")
            .color("#1f77b4")
            .linewidth(1.5)
        .scatter(x2, y2)
            .label("Theoretical")
            .marker('o')
        .xlabel("Time (s)")
        .ylabel("Temperature (K)")
        .legend()
            .location(Location::UpperRight)
        .grid(true)
    .save("figure.pdf")?;

πŸ“¦ Installation

# Not yet published to crates.io
# For now, build from source:
git clone https://github.com/yourusername/velociplot
cd velociplot
cargo build --release

πŸ—ΊοΈ Roadmap

Phase 1: Foundation (Current)

  • Core architecture and traits
  • Basic 2D coordinate system
  • Simple line and scatter plots
  • PNG output (raster)
  • Color and style system

Phase 2: Core Plots

  • Bar charts and histograms
  • Error bars and bands
  • Multiple series support
  • Legend and annotations
  • Axis customization (labels, limits, scales)

Phase 3: Publication Quality

  • LaTeX math rendering
  • Vector output (PDF, SVG, EPS)
  • DPI and size control
  • Multiple subplots and layouts
  • Publication templates (Nature, Science, IEEE, ACS)

Phase 4: Advanced Plots

  • Heatmaps and colormaps
  • Contour plots
  • 3D surface plots
  • Polar plots
  • Vector fields (quiver)

Phase 5: Ecosystem Integration

  • Integration with ndarray
  • Integration with polars DataFrames
  • Jupyter notebook support
  • CLI tool for quick plotting
  • Python bindings (PyO3)

🎨 Design Philosophy

Inspired by matplotlib, but Rust-native:

  • βœ… Performance - 10-100x faster than Python/matplotlib
  • βœ… Type Safety - Catch errors at compile time
  • βœ… No Dependencies - No Python, no C libraries (for core features)
  • βœ… Modern Defaults - Beautiful out-of-the-box
  • βœ… Progressive Disclosure - Easy to start, powerful when needed

API Principles:

  • Simple one-liners for common tasks
  • Builder pattern for complex figures
  • Method chaining for fluent API
  • Sensible defaults (but full control when needed)

🎯 Use Cases

  • Academic Papers - Publication-ready figures with LaTeX
  • Data Analysis - Quick exploratory plots
  • Engineering - Technical visualizations and reports
  • Real-time Monitoring - High-performance streaming plots
  • Web Services - Generate plots server-side (no GUI needed)

πŸ”§ Architecture

velociplot/
β”œβ”€β”€ velociplot-core/      # Core plotting engine
β”œβ”€β”€ velociplot-backend/   # Rendering backends (Cairo, Skia, etc.)
β”œβ”€β”€ velociplot-formats/   # Output formats (PDF, SVG, PNG)
β”œβ”€β”€ velociplot-styles/    # Style presets and themes
└── velociplot-cli/       # Command-line tool (optional)

🀝 Contributing

Contributions are welcome! This project is in early stages.

How to contribute:

  • πŸ› Report bugs or suggest features via Issues
  • πŸ’» Submit PRs for bug fixes or features
  • πŸ“ Improve documentation
  • 🎨 Create plot examples or style templates
  • πŸ§ͺ Add test cases

πŸ“š Documentation

πŸ™ Acknowledgments

Standing on the shoulders of giants:

πŸ“ License

MIT OR Apache-2.0

πŸ¦– Why "velociplot"?

Because your scientific plots should be as fast and efficient as a velociraptor hunting prey. No more waiting minutes for matplotlib to render complex figures!


velociplot - Because your plots shouldn't take ages to render πŸ¦–βš‘

Status: 🚧 Pre-alpha - Core architecture in development

Star ⭐ this repo to follow development!