Comment by cvanelteren
5 months ago
For those unfamiliar, ProPlot was widely loved for enabling publication-quality graphics with minimal effort. UltraPlot continues that mission with active development, updated compatibility, and a focus on simplicity.
Why UltraPlot?
Key improvements over vanilla matplotlib:
- Effortless subplot management: build complex multi-panel layouts in one line
- GeoAxes support included out of the box
- Smarter aesthetics: beautiful colormaps, fonts, and styles without extra code
- Intuitive syntax: less boilerplate, more plotting
- Seamless compatibility: everything you know from matplotlib still applies
Instead of wrestling with subplot positioning and styling, you can write:
``` import ultraplot as uplt
layout = [[0, 1, 2], [3, 3, 4]]
fig, axs = uplt.subplots(layout)
axs[0].plot(x, y1, label="Data 1")
axs[1].plot(x, y2, label="Data 2")
axs.format(xlabel="Hello", ylabel="Hacker news", abc="[A]") # format applies to all axes fig.legend()
```
...and get a clean, professional-looking plot in seconds.
Get Started:
- GitHub: https://github.com/Ultraplot/ultraplot
- Docs: https://ultraplot.readthedocs.io/en/latest/
Try it out and let us know what you think — contributions and feedback are very welcome!
> Instead of wrestling with subplot positioning and styling, you can write:
This would be more convincing if you showed the equivalent Matplotlib code and demonstrated that any improvements are not just a result of default settings being a closer match for what the example tries to do. The code shown here looks more or less like what I'd expect a Matplotlib hello-world to look like.
You are right. I was doubting whether to make a more complicated example -- but formatting is poor in text boxes. Let me give you a more complex one.
Let's say we want a 3-column plot: colormesh, polar, and geo plot.
UltraPlot:
Matplotlib equivalent:
The aim isn't to replace matplotlib but make publication-ready plots with fewer keystrokes and better defaults. We also bundle plot types not available in matplotlib like graph plotting, lollipop charts, heatmaps etc.
> You are right. I was doubting to make a more complicated example -- but formatting is poor on txt boxes.
I see now that you have an example in the README. I think it would be better still in the README, but as plain text rather than rendered into an SVG.
Interesting, thanks. A few questions from a newbie:
* I hadn't heard of ProPlot before. I take it that it's no longer maintained? Is there an announcement, or is it just obvious from commits drying up (like with PIL which was forked into Pillow)?
* Is this a (friendly) fork (again, as with PIL/Pillow), or a reimplementation (in which case are there big differences or does it aim to match)?
* I hadn't of GeoAxes either and that looks pretty useful. The top web search results for that term are ProPlot and Cartopy. Is the Cartopy implementation related at all? Is this a bundling of that, or a similar reimplementation, or something fairly different?
Thanks for your questions.
To answer my own questions:
* Yes it seems ProPlot stagnated and no longer works with latest matplotlib versions. UltraPlot is a fork that fixes that:
https://github.com/proplot-dev/proplot/pull/459
* Yes, the documentation says that GeoAxes is from Cartopy.
(Also, typo: the project description says "succint" rather than "succinct".)