Replace every plot: a new plot widget behind the 14 panels that use wxPlotCtrl
Nobody has claimed this yet.
Assessment
- Difficulty
- 5/5
- Estimated time
- Over a week
- Newbie friendliness
- 8/100
Research direction
Start by reading the wxPlotCtrl wrapper ewxPlotCtrl and the 30-method subset the 14 listed panels call, such as AddCurve, DeleteCurve and the axis and title setters. The first step is a design discussion on the new widget's API, not code. Done means an agreed interface, unit tests for the axis and tick logic, and a headless render of each current plot for comparison.
Written by the indexing model from the issue text.
Description
Andy, 2026-10-15, on the GROMACS minimisation energy plot: "We need to replace ALL plots with ones that work better."
That plot shows the old component's defaults: the x axis runs from -150 to 400 for steps 0 to 240, every y tick reads -4.51xe+06, and the unit is kJoule/Mole.
Where plots come from: every property plot goes through wxPlotCtrl (src/wxgui/wxplotctrl, about 15,000 lines) via ewxPlotCtrl. Users: GeomTracePropertyPanel, VectorPlotPropertyPanel, PlotAnyPropertyPanel, PlotMetaXY/3D, MoPanel, MomentsPanel, SpinSpin, TableAtomCoords, BuilderTraceStress, EqConstPlot, RxnConstPlot, RxnConstVsPlot, RxnErrPlot and RxnTrace. Together they call about 30 methods: AddCurve/DeleteCurve, pens and symbols, titles and axis labels, key, cursor index, client-coordinate mapping, and so on.
Plan
-
A new plot widget with that 30-method subset, so the panels change little. It provides:
- tight data ranges and nice ticks;
- offset or scaled axes for large values (E - E_ref, or x10^n in the label);
- unit names (kJ/mol, Hartree, eV, bar);
- Okabe-Ito colours (#210);
- hover readout, zoom and reset;
- an optional click callback (e.g. go to that geometry step when frames exist);
- PNG/SVG/CSV export.
Axis and tick logic gets unit tests.
-
A headless render of every current plot, old and new side by side, for review.
-
Switch the panels over in batches, then remove wxplotctrl.
The newer drawings (SpectrumCanvas, the MO diagram, the progress box) should share the axis and tick code.
Related: #334, #210, #180.
- Dominant language
- C
- Stars
- 10
- Forks
- 8
- Avg merge
- 21m
- Merged PRs (30d)
- 1
Getting set up
This project ships no dev container, Dockerfile or contributing guide, so setting up is up to you: start from its README, and see our first-contribution guide for the general steps.
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from FriendsofECCE/ECCE
-
Difficulty 2/5 1-3 hours Newbie friendliness 70/100
FriendsofECCE/ECCE#336 · 1 comment ·
-
Difficulty 4/5 3-5 days Newbie friendliness 43/100
FriendsofECCE/ECCE#361 · 1 comment ·
-
Difficulty 5/5 Over a week Newbie friendliness 20/100
FriendsofECCE/ECCE#359 ·
-
Difficulty 5/5 Over a week Newbie friendliness 28/100
FriendsofECCE/ECCE#358 ·
-
Difficulty 5/5 Over a week Newbie friendliness 20/100
FriendsofECCE/ECCE#357 · 3 comments ·
All issues in FriendsofECCE/ECCE
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 67/100
dosemu2/dosemu2#3178 · 1 comment · 1 reaction ·
Maintainers usually reply within 1 day
-
backlog bug
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
EchoTools/nevr-runtime#653 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
InfiniTimeOrg/InfiniTime#2492 ·
-
Build fails when `memset_s` is unavailable: `Undefined symbols for architecture ppc: "_memset_s"`Open
Difficulty 2/5 1-3 hours Newbie friendliness 65/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
Maintainers usually reply within 1 day