|
| 1 | +# Plotting libraries in Rust |
| 2 | + |
| 3 | +I searched over published crates on crates.io in November 2025 and found some interesting libraries. |
| 4 | +I briefly describe their functionality/main limitations here. |
| 5 | + |
| 6 | +Note that as far as I've looked, `egui_plot` is the only plotting library that supports plot interactions straight through Rust, without going through Javascript or other binding layers. |
| 7 | +Also, `egui_plot` produces a list of painting commands that are sent to a backend renderer, which can be GPU accelerated and easily integrated into other GUIs. |
| 8 | +Therefore, `egui_plot` can efficiently render large number of (interactive) plot items. |
| 9 | +See [`egui`](https://github.com/emilk/egui) for more info about GPU integration. |
| 10 | + |
| 11 | +## Rust rendering libraries |
| 12 | + |
| 13 | +| Name | Description | |
| 14 | +|-------------------------------------------------------------|---------------------------------------------------------------------------------| |
| 15 | +| [`plotters`](https://crates.io/crates/plotters) | Pure Rust, interesting! But interactivity seems to be done via Javascript only. | |
| 16 | +| [`graplot`](https://crates.io/crates/graplot) | Pure Rust, but inactive | |
| 17 | +| [`quill`](https://crates.io/crates/quill) | Pure Rust, SVG, basic plots | |
| 18 | +| [`plotlib`](https://crates.io/crates/plotlib) | Pure Rust, SVG/text, basic features, looks abandoned | |
| 19 | +| [`rustplotlib`](https://crates.io/crates/rustplotlib) | Pure Rust, inactive | |
| 20 | +| [`criterion-plot`](https://crates.io/crates/criterion-plot) | not maintained | |
| 21 | +| [`runmat-plot`](https://crates.io/crates/runmat-plot) | Uses matplotlib-like DSL | |
| 22 | +| [`cgrustplot`](https://crates.io/crates/cgrustplot) | terminal plotting | |
| 23 | +| [`termplot`](https://crates.io/crates/termplot) | terminal plotting | |
| 24 | +| [`lowcharts`](https://crates.io/crates/lowcharts) | terminal plotting | |
| 25 | + |
| 26 | +## Wrappers around other plotting libraries |
| 27 | + |
| 28 | +Following crates wrap other plotting libraries: |
| 29 | + |
| 30 | +| Name | Description | |
| 31 | +|-----------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| |
| 32 | +| [`dear-imgui-rs`](https://crates.io/crates/dear-imgui-rs) | C/C++ bindings to https://github.com/ocornut/imgui. IMGUI is probably the most interesting library out there, as it is also immediate-mode based like `egui` and `egui_plot`. | |
| 33 | +| [`gnuplot`](https://crates.io/crates/gnuplot) | C/C++ bindings to http://www.gnuplot.info/ | |
| 34 | +| [`plotly`](https://crates.io/crates/plotly) | JS wrapper | |
| 35 | +| [`charming`](https://crates.io/crates/charming) | JS wrapper | |
| 36 | +| [`charts-rs`](https://crates.io/crates/charts-rs) | JS wrapper | |
| 37 | +| [`plotpy`](https://crates.io/crates/plotpy) | Python wrapper | |
| 38 | +| [`poloto`](https://crates.io/crates/poloto) | SVG, no interaction | |
0 commit comments