SkillAgentSearch skills...

Fchart3

Python scripts to make beautiful deepsky finder charts and maps in various image formats.

Install / Use

/learn @skybber/Fchart3
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

Fchart3

Fchart3 is a Python project for creating high-quality astronomical finder charts and maps. It uses data and catalogues based on Stellarium, KStars, HNSky and Gaia-derived deep star catalogues (hundreds of millions of stars, typically up to ~16–17 mag depending on the used catalog set).

In addition to single-object charts, the package also includes fchart3-atlas – a generator for multi-page sky atlases built on top of the same rendering engine.

It can generate:

  • Offline charts with output to PDF, PNG, SVG or TikZ.
  • Online interactive charts – the same rendering engine is used in the CzSkY project.

fchart3


Online interactive version (CzSkY)

Interactive web charts using the fchart3 engine are available in the CzSkY project:


Features

  • Deep-sky finder charts based on Gaia-derived star catalogues (hundreds of millions of stars).
  • Deep-sky catalogue with hundreds of thousands of objects (from HNSky).
  • Output formats: PDF, PNG, SVG, TikZ (format is determined by --output-file extension).
  • Multiple projections:
    • stereographic (default)
    • orthographic
    • equidistant (fisheye-like)
  • Equatorial and horizontal coordinate workflows:
    • Equatorial maps (RA/Dec).
    • Horizontal (Alt/Az) maps with observer location and time.
    • CLI supports parsing both RA/Dec and Alt/Az positions.
  • Solar system rendering (Sun, Moon, planets; and planetary moons):
    • realistic radii and phases
    • Saturn ring orientation
    • optional moon magnitudes / label placement (as supported by the engine)
  • Optional comet / minor planet resolving with trajectory plotting (requires time window).
  • Optional polygon horizon from Stellarium landscape (landscape.ini) for Alt/Az charts.
  • Flexible configuration: magnitude limits, labels, fonts, legends, colors, line widths, etc.
  • Used as the map engine of the CzSkY online star atlas.

Install

Recommended: install from Git into a virtual environment:

git clone https://github.com/skybber/fchart3.git
cd fchart3

python3 -m venv venv
source venv/bin/activate

pip install -r requirements.txt
pip install ./

Linux build dependencies (common)

On some systems you may need development packages for Cairo and build tools before installing (example for Ubuntu):

sudo apt update
sudo apt install -y python3-dev pkg-config libcairo2-dev build-essential

Then:

pip install -U pip setuptools wheel
pip install pycairo
pip install .

Windows

git clone https://github.com/skybber/fchart3.git
cd fchart3

python -m venv venv
venv\Scripts\activate

pip install -U pip setuptools wheel
pip install .

Run

Show all CLI options:

fchart3 --help

Basic chart (default PDF) for Crab Nebula:

fchart3 M1

Output file / format

The output format is defined by --output-file extension:

  • something.pdf
  • something.png
  • something.svg
  • something.tikz

Example (PNG):

fchart3 --output-dir out --output-file m31.png M31

Example (TikZ):

fchart3 --output-dir out --output-file m39.tikz M39

Example: “complex” chart (PDF)

fchart3 -W 190 -H 270 -fov 40 -ls 9 -ld 9 \
  --show-nebula-outlines --show-enhanced-milky-way \
  --font-style-bayer bold --font-style-dso italic \
  --flamsteed-numbers-only --show-equatorial-grid \
  --hide-map-orientation-legend --hide-map-scale-legend \
  m39

Notes:

  • -ls/--limit-star controls star limiting magnitude.
  • -ld/--limit-dso controls DSO limiting magnitude.
  • -fov/--fieldsize is the diameter of the field of view (degrees).

Sources (what you can pass on CLI)

A "source" can be:

  • DSO names: NGC891, IC1396, M31, …
  • Comets: by MPC designation, e.g. "C/2023 A3" (requires -t, --trajectory-from, --trajectory-to)
  • Minor planets (asteroids): by designation, e.g. "Ceres" (requires -t, --trajectory-from, --trajectory-to)
  • Special: ALLMESSIER (renders maps for all Messier objects)
  • Explicit coordinates:

Explicit equatorial position (RA,Dec)

fchart3 "9:35:00.8,-34:15:33,SomeCaption"
  • RA is interpreted as hours (sexagesimal or decimal).
  • Dec is interpreted as degrees (sexagesimal or decimal).

Explicit horizontal position (Az,Alt)

Prefix the first component with h: (or hor: / altaz:) and use degrees:

fchart3 --coord-system horizontal -L 14.42 -A 50.08 -t now \
  "h:180:00:00,45:00:00,AzAltCaption"

Decimal degrees are also accepted:

fchart3 --coord-system horizontal -L 14.42 -A 50.08 -t now \
  "h:180.5,45.25,AzAltCaption"

Horizontal coordinates (h:) are allowed only when --coord-system horizontal is selected.


Observer location, time and coordinate systems

Coordinate system

  • Default: --coord-system equatorial
  • Horizontal: --coord-system horizontal (Alt/Az)

Observer longitude/latitude

Required for horizontal charts and for time-dependent objects:

-L, --obs-longitude   Observer longitude in degrees (east positive)
-A, --obs-latitude    Observer latitude in degrees

Observation time

Use ISO-8601 UTC time or now:

-t now
-t 2026-01-02T21:15:00Z
-t 2026-01-02T21:15:00+01:00

All-sky (fisheye) mode

Fchart3 CLI supports a convenience all-sky mode for rendering a visible hemisphere (zenith-centered) fisheye chart.

It is designed for quick “what’s up now” sky maps and works best with the equidistant (azimuthal equidistant / fisheye-like) projection.

--all-sky

--all-sky is a shortcut that forces a suitable configuration:

  • --coord-system horizontal
  • --projection equidistant
  • if -fov/--fieldsize is not set: -fov 180 (full visible hemisphere)
  • if -t is not set: uses now (UTC)

It requires observer location (-L/-A).

Example:

fchart3 --all-sky --font-size 2 -ls 6 -ld 6 -L 14.42 -A 50.08

With explicit time:

fchart3 --all-sky --font-size 2 -ls 6 -ld 6 -L 14.42 -A 50.08 -t 2026-01-02T21:15:00Z

Notes

  • All-sky charts are typically used with:

    • --show-horizon (draw the horizon circle)
    • optional --clip-to-horizon (hide objects below the horizon, if enabled in the engine)
  • For best results on portrait paper, consider using a square-ish page size or landscape orientation, because an all-sky chart is circular.


Stellarium landscape horizon (optional)

You can load a Stellarium landscape directory (must contain landscape.ini) and use its polygon horizon. It can also provide location metadata (lon/lat) if present:

fchart3 --coord-system horizontal -t now \
  --stellarium-landscape "/path/to/stellarium/landscapes/MyLandscape" \
  "h:220,12,LookHere"

Extra marks (crosses)

Add a cross mark with -x:

Format:

  • "c1,c2[,label[,pos]]"
  • pos = t|b|l|r (top/bottom/left/right)

Equatorial cross (RA/Dec):

fchart3 -x "20:35:25.4,+60:07:17.7,SN,t" NGC6946

Horizontal cross (Az/Alt; requires horizontal mode):

fchart3 --coord-system horizontal -L 14.42 -A 50.08 -t now \
  -x "h:180,45,Mark,r" "h:180,45,Center"

Solar system objects

Enable solar system rendering:

fchart3 --show-solar-system -t now -L 14.42 -A 50.08 Jupiter

For meaningful results, solar system objects require:

  • -t time
  • observer lon/lat (or a Stellarium landscape that provides them)

Comets and minor planets (MPC) + trajectories

Fchart3 can resolve comets and minor planets using MPC files and plot their trajectories, when you provide a time window:

Required:

  • -t observation time
  • --trajectory-from and --trajectory-to (UTC; date or datetime)

Comet example:

fchart3 -t 2026-01-02T21:00:00Z \
  --trajectory-from 2026-01-02 \
  --trajectory-to   2026-01-09 \
  "C/2023 A3"

Minor planet (asteroid) example:

# Asteroid (1) Ceres
fchart3 -t 2026-01-02T21:00:00Z \
  --trajectory-from 2026-01-02 \
  --trajectory-to   2026-02-02 \
  "1"

# Asteroid (433) Eros
fchart3 -t 2026-01-02T21:00:00Z \
  --trajectory-from 2026-01-02 \
  --trajectory-to   2026-02-02 \
  "433"

MPC files are downloaded automatically if missing:

  • CometEls.txt (comets)
  • MPCORB.9999.DAT (subset of numbered minor planets)

You can override paths and force refresh:

fchart3 --mpc-comets-file ./CometEls.txt --update-comets ...
fchart3 --mpc-minor-planets-file ./MPCORB.9999.DAT --update-minor-planets ...

Data files

This repository contains catalogues in data/catalogs (selection):

  • bsc5.dat – bright stars catalogue
  • constbnd.dat – constellation boundaries
  • constellationship_western.fab – constellation lines (Stellarium)
  • milkyway.dat, milkyway_enhanced.dat – Milky Way outlines/shading
  • deep_sky.hnd – deep-sky objects from HNSky (Han Kleijn)
  • outlines_catgen.dat – nebula outlines (OpenNGC-based)
  • PGC.dat, PGC_updates.dat – PGC galaxy catalogue (+ updates)
  • namedstars.dat, starnames.dat, unamedstars.dat – star name catalogues (KStars)
  • stars_0_0v*.cat – Gaia-based deep star catalogues (Stellarium)

Runtime-downloaded (not stored in repo by default):

  • CometEls.txt (MPC comet elements)
  • MPCORB.9999.DAT (MPCORB subset)

fchart3-atlas (multi-page sky atlas generator)

fchart3-atlas is included in the fchart3 package and builds on top of the fchart3 CLI.
It generates a multi-page sky atlas by repeatedly rendering many overlapping chart tiles – similar in spirit to classic printed atlases

What it does

  • Splits the sky into a grid of tiles (pages) based on:
    • --field-deg (

Related Skills

View on GitHub
GitHub Stars17
CategoryDevelopment
Updated26d ago
Forks7

Languages

Python

Security Score

90/100

Audited on Mar 7, 2026

No findings