Starplot

Starplot

Archives
Subscribe
November 11, 2026

Starplot v0.23 - Image overlays!

Starplot 0.23 is now available. 🎉

Here's a look at what's new, and what to check before you upgrade:

🌌 Image overlays

The new image() function lets you overlay a photo on your plot, lined up with the stars, DSOs, and everything else Starplot draws. It works on map, horizon, and optic plots.

image.png

The Andromeda Galaxy (M31) photo is overlaid on an optic plot, with Starplot's stars and galaxy outlines on top.

To position the image, you give Starplot a set of control points that map a pixel in your image to the RA/DEC of the star at that pixel. Starplot fits the image to the sky and warps it to match the plot's projection (including atmospheric refraction on horizon and optic plots).

  • You need at least 3 control points, and they shouldn't all lie on a single line. More points, spread out across the image, give a better fit.
  • A plate solver like tetra3rs can find the control points for you automatically (this is not built-in to Starplot).
  • Control the image's opacity and zorder with the new ImageStyle.

➡️ See the full example, with code

🔎 SQL strings for where_* kwargs

The where_* arguments on the plotting functions can now be a SQL WHERE clause string, in addition to a list of expressions:

p.stars(where="magnitude < 8")

Useful for quick filtering (or for building filters from user input).

🔵 More consistent sizing for circle markers

Circle-based markers (circle_line, circle_crosshair, and circle_double_border) are now sized based on their "central mass" so they match a plain circle marker with the same size.

This makes it easier to use the same star sizing function for different types of stars that you may want to plot with different symbols (e.g. variable stars, multiple star systems, etc).

The markers page has details.

✨ Smaller improvements

  • Smoother curves from the ellipse() function
  • New temporary settings overrides: use with settings(...): to change settings for just a block of code, and the previous values are restored afterwards. Details here
  • Updated the default DSO catalog to fix a bug with galaxy geometries (the previous catalog interpreted the angles incorrectly).

⚠️ A few breaking changes ⚠️

Some PlotStyle fields were restructured to be more consistent and better organized:

  • bayer_labels and flamsteed_labels are now part of the star's style (e.g. star.bayer_label)
  • constellation_lines, constellation_labels, and constellation_borders are now part of the constellation style (e.g. constellation.line)
  • planets is now singular: planet

If you use custom styles, update those field names before upgrading. See the full changelog for details.


🙋 Help Wanted

Want to help make Starplot better? Here are a few things we need help with right now:

  • Anything on our roadmap. If you're interested in helping with any of these, let me know, and I'd be happy to help you get started with contributing (setting up your environment, etc).
  • Check for errors on the Gaia DR3 catalog builder
  • Adding more language translations - details here
  • Creating more catalog builders

Read more about contributing here ↗️


💙 Show your support for Starplot

  • All Sky Map - made with Starplot!
  • Starplot stickers

As always, if you notice any bugs or have questions, please open an issue on GitHub, join us on Discord, or just reply to this email.

Happy Starplotting!!

Steve Berardi

[email protected]

Don't miss what's next. Subscribe to Starplot:
Older → Starplot v0.21 is here!
Discord
starplot.dev
Powered by Buttondown, the easiest way to start and grow your newsletter.