Try Astrologer API

Subscribe to support and grow the project.

Modern Charts #

Kerykeion supports a modern concentric-ring chart style as an alternative to the classic wheel. The modern style renders charts with graduated ruler scales, clean aspect lines with midpoint glyphs, and a distinct visual hierarchy.

All chart types and all six themes work with the modern style.

Modern Natal Chart #

Pass style="modern" to save_svg() or generate_svg_string().

from pathlib import Path
from kerykeion import AstrologicalSubjectFactory
from kerykeion.chart_data_factory import ChartDataFactory
from kerykeion.charts.chart_drawer import ChartDrawer

subject = AstrologicalSubjectFactory.from_birth_data(
    "John Lennon", 1940, 10, 9, 18, 30,
    lng=-2.9833, lat=53.4, tz_str="Europe/London", online=False,
)

chart_data = ChartDataFactory.create_natal_chart_data(subject)
chart = ChartDrawer(chart_data=chart_data)

output_dir = Path("charts_output")
output_dir.mkdir(exist_ok=True)
chart.save_svg(output_path=output_dir, filename="lennon-modern-natal", style="modern")

Modern Natal Chart

Modern Synastry Chart #

Dual-wheel modern charts show two subjects with distinct inner and outer planet rings.

from pathlib import Path
from kerykeion import AstrologicalSubjectFactory
from kerykeion.chart_data_factory import ChartDataFactory
from kerykeion.charts.chart_drawer import ChartDrawer

john = AstrologicalSubjectFactory.from_birth_data(
    "John Lennon", 1940, 10, 9, 18, 30,
    lng=-2.9833, lat=53.4, tz_str="Europe/London", online=False,
)
yoko = AstrologicalSubjectFactory.from_birth_data(
    "Yoko Ono", 1933, 2, 18, 20, 30,
    lng=139.6917, lat=35.6895, tz_str="Asia/Tokyo", online=False,
)

chart_data = ChartDataFactory.create_synastry_chart_data(john, yoko)
chart = ChartDrawer(chart_data=chart_data)

output_dir = Path("charts_output")
output_dir.mkdir(exist_ok=True)
chart.save_svg(output_path=output_dir, filename="lennon-ono-modern-synastry", style="modern")

Modern Synastry Chart

Modern Transit Chart #

from pathlib import Path
from kerykeion import AstrologicalSubjectFactory
from kerykeion.chart_data_factory import ChartDataFactory
from kerykeion.charts.chart_drawer import ChartDrawer

subject = AstrologicalSubjectFactory.from_birth_data(
    "John Lennon", 1940, 10, 9, 18, 30,
    lng=-2.9833, lat=53.4, tz_str="Europe/London", online=False,
)

transit = AstrologicalSubjectFactory.from_birth_data(
    "Transit", 2025, 3, 4, 12, 0,
    lng=-2.9833, lat=53.4, tz_str="Europe/London", online=False,
)

chart_data = ChartDataFactory.create_transit_chart_data(subject, transit)
chart = ChartDrawer(chart_data=chart_data)

output_dir = Path("charts_output")
output_dir.mkdir(exist_ok=True)
chart.save_svg(output_path=output_dir, filename="lennon-modern-transit", style="modern")

Modern Transit Chart

Modern Wheel Only #

The wheel-only output (without aspect grid) also supports the modern style:

from pathlib import Path
from kerykeion import AstrologicalSubjectFactory
from kerykeion.chart_data_factory import ChartDataFactory
from kerykeion.charts.chart_drawer import ChartDrawer

subject = AstrologicalSubjectFactory.from_birth_data(
    "John Lennon", 1940, 10, 9, 18, 30,
    lng=-2.9833, lat=53.4, tz_str="Europe/London", online=False,
)

chart_data = ChartDataFactory.create_natal_chart_data(subject)
chart = ChartDrawer(chart_data=chart_data, theme="dark")

output_dir = Path("charts_output")
output_dir.mkdir(exist_ok=True)
chart.save_wheel_only_svg_file(
    output_path=output_dir,
    filename="lennon-modern-wheel-dark",
    style="modern",
)

Modern Wheel Only

Modern-Only Parameters #

These keyword arguments are specific to the modern style and are ignored when style="classic":

Parameter Type Default Description
show_zodiac_background_ring bool True Draw colored zodiac wedges behind the outer planet ring

Example disabling the zodiac background:

chart.save_svg(
    output_path=output_dir,
    filename="modern-no-zodiac-bg",
    style="modern",
    show_zodiac_background_ring=False,
)

Classic vs Modern Comparison #

Both styles share the same underlying ChartDataFactory data. Only the rendering differs:

Feature Classic Modern
Layout Traditional wheel with sectors Concentric rings
Aspect display Grid/list panel Lines with midpoint glyphs in the core ring
Degree indicators Ticks around the wheel Graduated ruler ring (1°/5°/10° ticks)
Dual chart layout Inner/outer wheel Flat dual-ring with shared ruler
All themes supported Yes Yes
All chart types supported Yes Yes

Need this in production? Use the Astrologer API for hosted calculations, charts, and AI interpretations - no server setup required. Learn more →