emilk / emilk/egui_plot

Planned work for 0.35.0

Open
#200 4 comments 2 reactions 0 assignees View on GitHub
planning
Dominant language
Rust
Stars
468
Forks
108
Avg merge
15m
Merged PRs (30d)
3

Description

I use this issue as a TODO scratchpad of things I want to focus on the most in near future (weeks), until next release 0.35.0. Most of it has a "sequential" nature to it, so if you'd like to contribute, definitely get in touch!

- Refactor internals. E.g. there are lots of code in `items/` which are not `PlotItem`s. Reorganize it in a sensible way. Then there is also code like `Legend`, which should get a new special `overlays/` treatment. I will try to not change public API (yet). #210 #211 #212
- In the library, there are two distinct things that should be cleanly separated: 1. PlotItem which are rendered on the plot "canvas" and 2. fixed-position UI overlays (such as legend). We are missing an OverlayItem trait.
- Work on plot bounds, I don't really understand the logic well, it's confusing, and I'd like to also add new features, such as maximum dragging bounds. #218 #220
- Plot bounds should allow closing bunch of opened issues and implement new interesting examples. In particular, I'd like to add a `sin(x)` demo with recalculated sampled points (markers), which are also stable while dragging. There is a `sin(x)` in the `lines` demo, but it's more "bolted on" `PlotPoints` and there is not much flexibility. For example, what if you wanted to sample points in non-linear way? Not possible now.
- A more complex example that should be next possible is to make a [Mandelbrot Viewer](https://mandelbrot.site/) !
- Add a colormap. There should be "anchor" colors specified by user, which will have gradient-like interpolation on unit interval. Then there should be mapping functions to/from this unit interval, that help to get current color. You should be able to specify colormap on a `Figure`. #188
- I would like to close all open PRs.

Finally, either a) release a new version, or b) do the public API refactor, and release new version.

#### Public API refactor:

Lots of things are called in a weird way. Lots of things are called PlotXYZ where XYZ is some generic name, and is inconsistent with other plotting librarires like `matplotlib` / `ggplot`. I would like to make steps towards unification of that. This will break everyone's code, so ideally I want to do it all at once, to make a more future-proof stable API.

Things that should be possible after refactor:

- Additional disabling / removal of plot items/overlays. This would be nice for the demo and interactive buttons. Now the buttons are swamped with the legend overlay, and I do not want to plumb in some "is a preview" special logic, as it would make the demo example codes a lot more complicated. #205

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.