Skip to content

Releases: Ultraplot/ultraplot

v1.50.2

20 May 11:31
d9d13bd
Compare
Choose a tag to compare

What's Changed

Full Changelog: v1.50.1...v1.50.2

v1.50.1

12 May 13:03
680800f
Compare
Choose a tag to compare

What's Changed

  • fix: specify import exception type and add typing-extensions to deps by @beckermr in #212

Full Changelog: v1.50...v1.50.1

v1.50: Networks, lollipops and sharing

11 May 21:33
e6b1bc6
Compare
Choose a tag to compare

UltraPlot v1.50

Version v1.50 is a major milestone for UltraPlot. As we become more familiar with the codebase, we’ve opened the door to new features—balancing innovation with continuous backend improvements and bug fixes.


🌍 GeoAxes Sharing

You can now share axes between subplots using GeoAxes, as long as they use the same rectilinear projection. This enables cleaner, more consistent layouts when working with geographical data.


🕸️ Network Graphs

UltraPlot now supports network visualizations out of the box. With smart defaults and simple customization options, creating beautiful network plots is easier than ever.

Network plotting code
import networkx as nx, ultraplot as uplt
n = 100
g = nx.random_geometric_graph(n, radius=0.2)
c = uplt.colormaps.get_cmap("viko")
c = c(np.linspace(0, 1, n))
node = dict(
    node_size=np.random.rand(n) * 100,
    node_color=c,
)
fig, ax = uplt.subplots()
ax.graph(g, layout="kamada_kawai", node_kw=node)
fig.show()

🍭 Lollipop Graphs

A sleek alternative to bar charts, lollipop graphs are now available directly through UltraPlot. They shine when visualizing datasets with many bars, reducing visual clutter while retaining clarity.

Lollipop example code
import ultraplot as uplt, pandas as pd, numpy as np
data = np.random.rand(5, 5).cumsum(axis=0).cumsum(axis=1)[:, ::-1]
data = pd.DataFrame(
    data,
    columns=pd.Index(np.arange(1, 6), name="column"),
    index=pd.Index(["a", "b", "c", "d", "e"], name="row idx"),
)
fig, ax = uplt.subplots(ncols=2, share=0)
ax[0].lollipop(
    data,
    stemcolor="green",
    stemwidth=2,
    marker="d",
    edgecolor="k",
)
ax[1].lollipoph(data, linestyle="solid")

What's Changed

Full Changelog: v1.11...v1.5

Various bug fixes

25 Apr 07:40
Compare
Choose a tag to compare

What's Changed

Full Changelog: v1.10.0...v1.11

v1.10.0 Ticks for Geoaxes

20 Mar 07:23
2085c2f
Compare
Choose a tag to compare

This release marks a newly added feature: ticks on GeoAxes
image
This allows for users to set ticks for the x and or y axis. These can be controlled by lonticklen, latticklen or ticklen for controlling the x, y or both axis at the same time. This works independently to the major and minor gridlines allow for optimal control over the look and feel of your plots.

What's Changed

New Contributors

Full Changelog: v1.0.9...v1.10.0

v1.0.9: IPython 9.0.0 compatibility and numerous backend fixes.

05 Mar 14:03
0fabdc9
Compare
Choose a tag to compare

What's Changed

Full Changelog: v1.0.8...v1.0.9

v1.0.8-2: Hotfix cycling properties

27 Feb 07:46
1457a2e
Compare
Choose a tag to compare

Hot fix for cycle not recognizing color argument

What's Changed

Full Changelog: v1.0.8...v1.0.8-2

v1.0.8: Minor bug fixes

23 Feb 15:47
e4ada78
Compare
Choose a tag to compare

Fixes an issue where ticks were not properly set when giving levels and ticks in pcolormesh and related functions in the colorbar. See more of the changes below.

What's Changed

Full Changelog: v1.0.7...v1.0.8

v1.0.7: Dev update.

15 Feb 13:22
b6fcd3e
Compare
Choose a tag to compare

What's Changed

Full Changelog: v1.0.6...v1.0.7

v1.0.6: Ensure norm fix

15 Feb 12:08
8cd9a08
Compare
Choose a tag to compare

What's Changed

New Contributors

Full Changelog: v1.0.5...v1.0.6