Skip to content

Commit b091602

Browse files
authored
Add ecosystem overview (#182)
1 parent e57b888 commit b091602

File tree

4 files changed

+45
-3
lines changed

4 files changed

+45
-3
lines changed

ECOSYSTEM.md

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
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 |

README.md

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,17 +8,21 @@
88
![Apache](https://img.shields.io/badge/license-Apache-blue.svg)
99
[![Discord](https://img.shields.io/discord/900275882684477440?label=egui%20discord)](https://discord.gg/JFcEma9bJq)
1010

11-
Immediate mode plotting for [`egui`](https://github.com/emilk/egui).
11+
Immediate mode 2D plotting library for [`egui`](https://crates.io/crates/https://github.com/emilk/egui).
1212

13-
![egui_plot_white](https://github.com/user-attachments/assets/b29acf5e-ccbf-4cb7-b03b-7e258fa5db16)
13+
[![egui_plot_white](https://github.com/user-attachments/assets/b29acf5e-ccbf-4cb7-b03b-7e258fa5db16)](https://emilk.github.io/egui_plot/)
1414

15-
[Try the web demo](https://emilk.github.io/egui_plot/)
15+
[Try the web demo gallery](https://emilk.github.io/egui_plot/).
1616

1717
## Testing
1818

1919
- Locally: `cargo run -p demo`
2020
- Web: `(cd demo && trunk serve)`
2121

22+
## Plotting libraries in Rust
23+
24+
To view a list of plotting libraries in Rust, see [notes on Rust plotting ecosystem](ECOSYSTEM.md).
25+
2226
## History
2327

2428
This crate was originally hosted at <https://github.com/emilk/egui> but was extracted into its own repository on 2024-07-15.
-38.7 KB
Loading

examples/save_plot/screenshot.png

-6.19 KB
Loading

0 commit comments

Comments
 (0)