Thanks to visit codestin.com
Credit goes to lib.rs

#grammar #graphics #charts #once #anywhere

no-std gguppy

Compose once, chart anywhere with the pure Rust grammar of graphics crate gguppy

2 unstable releases

Uses new Rust 2024

0.4.0 Jun 15, 2025
0.1.0 Feb 23, 2024

#341 in Visualization

Codestin Search App

69 downloads per month

Apache-2.0 OR MIT

295KB
3K SLoC

gguppy

[!CAUTION] 🚧 This package is still in work and subject to great change.

gguppy (né arwggplot) is an interactive, unified, layered Grammar of Graphics implementation in pure Rust. Compose once, chart anywhere with gguppy.

Why gguppy?

1. Friendly syntax

Rust is strange for python and R users. gguppy aims to provide a familiar, friendly and ergonomic syntax. You can even write in different coding styles.

Grammar of graphics is a first class citizen in gguppy:

use gguppy::prelude::*

df = minidf!["x" => &[1, 2, 3], "y" => &[4, 5, 6]]
plot = ggplot![df, aes("x", "y")] + geom_point![]

A MATLAB/matplotlib-esque syntax will also be supported.

use gguppy::prelude::*

fig, axis = mplot![]

2. Batteries included

gguppy aims to allow you to write once, plot anywhere using its flexible and extensible architecture.

3. Speed

Workspace Structure

Crates

  • 🛠️ gguppy_core

    • 🛠️ Implementation of the grammar of graphics in no_std Rust
    • 🛠️ Consumes any dataframe-like structure implementing the GGData trait
    • 🛠️ Extensible with any plot types implementing the GGCapable trait
    • 🛠️ Produces geometric primitives implementing the DrawablePrim trait
    • 🛠️ Compiles for static desktop display or interactive wasm plots
  • 🛠️ gguppy_data

    • 🛠️ Minimalist dataframe minidf plottable by gguppy in no_std Rust
    • 🛠️ Features adapters for arrow and arrow2
    • 🛠️ Features adapters for polars, pandas, and more
  • 🛠️ arwggplot

    • 🛠️ Minimalist svg backend for gguppy in no_std Rust
    • 🛠️ Features vector backends to svg, eps, and more
    • 🛠️ Features raster backends to bmp, png, and more

Module Layout

  • src

Dependencies

~1MB
~14K SLoC