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 *;
// Simple plot
plot
.line
.xlabel
.ylabel
.save?;
// Publication-quality figure
new
.size_inches // Single-column width
.dpi
.add_subplot
.line
.label
.color
.linewidth
.scatter
.label
.marker
.xlabel
.ylabel
.legend
.location
.grid
.save?;
π¦ Installation
# Not yet published to crates.io
# For now, build from source:
πΊοΈ 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
polarsDataFrames - 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
π€ 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
- API Documentation (coming soon)
- User Guide (coming soon)
- Examples Gallery (coming soon)
π Acknowledgments
Standing on the shoulders of giants:
- matplotlib - The gold standard for scientific plotting
- plotters - Rust plotting pioneer
- egui_plot - Interactive plotting in Rust
- poloto - SVG plotting techniques
- resvg - SVG rendering
π 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!