This project contins solar system mapping tools: an interactive viewer, printable PDF charts, and orbit position tables. All code was generated by Claude Code, prompted by me (Tim DeBenedictis, timd@southernstars.com).
The original 1964 edition of the Peterson Field Guide to Stars and Planets, published long before home computers, contained solar system maps where you could plot the planets' positions on any date, trace lines from the Earth to the other planets, and find their positions among the stars on a map of the ecliptic constellations. You could "calculate" the planets' positions on paper in a few minutes, well enough to find them in the sky.
This project started as an attempt to reproduce those paper solar system maps. Later, it became an exercise in vibe-coding a web page. The interactive HTML version demonstrates exactly the same concepts as the Peterson Field Guide paper maps. And it can do things paper maps can't - like animation, and showing the solar system's third dimension. It's all self-contained in one single HTML file. Do whatever you want with it. Have fun!
- ssmap.html — Interactive browser-based solar system map with zoomable elliptical orbits, date picker, and light/dark themes. Open directly in any browser.
- ssmap2.py — Generates combined ecliptic star chart + geocentric solar system diagram. Shows heliocentric planet orbits centered on Earth's position with sight lines to zodiac (ecliptic) constellations.
- ssmap.py — Generate a scaled PDF diagram of the solar system with elliptical orbits.
- ecliptic.py — Generates zodiac (ecliptic) star chart PDF using Lambert azimuthal equal-area projection, with IAU constellation stick figures.
- sstable.py — Generates tables of orbital positions past perihelion at monthly intervals (PDF or CSV).
- drawctx.py — Drawing context abstraction supporting both PDF (reportlab) and PNG (Pillow) output.
pip install reportlab Pillow
You can generate a combined ecliptic constellation + solar system map for a specific date. These two examples generate charts for June 9th, 2026. The first generates PDF; the second generates a PNG image 1080 pixels on the side in dark mode:
python3 ssmap2.py --date 2025-06-09
python3 ssmap2.py --date 2025-06-09 --dark --png 1080
You can change the scale to show more of the inner (or outer) planet orbits with the --au option. There is a --help option to show all script arguments.
This is a lot easier than the method published in the Petersen Field Guide in 1964, reproduced below. If you want to appreciate how astronomical computation was done before computers, read on.
First you have to generate solar system map PDFs and print them! The following commands generate PDFs of the inner and outer planet orbits, the ecliptic constellation star chart, and a table of planet positions:
python3 ssmap.py 2.5 -o inner_planets.pdf
python3 ssmap.py 0.125 -o outer_planets.pdf
python3 ecliptic.py -o ecliptic.pdf
python3 sstable.py --pdf -o planet_positions.pdf
By default, sstable.py generates planet positions for 2026 through 2030, but you can specify any date range. All the python scripts take a --help argument which shows all their options.
The orbit maps show where each planet is at perihelion, when it's closest to the Sun. Numbered marks along the orbits show where the planets are every day past perihelion (for the inner planets), or every year past perihelion (for the outer planets).
The planet position table shows the number of days past perihelion where each planet is at the start of each month. Add the current day of the month to this number, and you get the number of days past perihelion where is planet is today. For example, at the beginning of June 2026, Earth is 147 days past perihelion. On June 9th, Earth is (147+9) = 156 days past perihelion. On the same day, Venus is (16+9) = 25 days past perihelion. Jupiter is 3.3 years past perihelion at the start of June 2026, and 3.4 years past perihelion at the start of July. The outer planets don't move as fast, so you don't need to add the day of the month. But you could estimate that on June 9th, Jupiter is about 3.33 years past perihelion.
Mark the spot where the Earth and Venus are in their orbits on the inner planet map. Mark the spot where Earth and Jupiter will be on the outer planet map. Note that on the outer planet map, numbered tick marks show Earth's position every month (1=January, 2=February, etc.) The Earth's position in its orbit repeats every year - that's what a year is!
On both maps, draw a line from Earth to Venus, and Earth to Jupiter. Place the ecliptic constellation map exactly centered over Earth, aligned so its X/Y axes are parallel to the "graph paper" gridlines on the orbit maps. Zero degrees ecliptic longitude (the vernal equinox) should point to the right, parallel to the vernal equinox on the orbit maps, shown with a right-pointing arrow. Extend the line from Earth to Venus (or Earth to Jupiter) all the way to the Ecliptic circle running through the middle of the ecliptic constellation band. Where your line intersects the Ecliptic is where the planets appear in the constellations.
If you've done this right, on June 9th 2026, you'll find the Jupiter and Venus appear right on top of each other, in the constellation Gemini. You've reproduced - on paper - the great evening Venus-Jupiter conjunction of 2026.
The inner circle on the ecliptic star map represents the Moon's orbit around the Earth. Numbered marks show the Moon's position each day. You can use this to find the Moon's position on any date using the planet position table. For example, at the beginning of June 2026, the Moon's position is 1.9. So on June 9th, the Moon's position is (1.9+9) = 10.9. Draw a line from the center of the ecliptic chart through Moon orbit position 10.9 to the Ecliptic, and you'll find that on June 9th, 2026, the Moon appeared in the constellation Pisces.
This project is released into the public domain under The Unlicense. Use it for any purpose whatsoever.