Skip to content

Transit Chart

A transit chart overlays the current positions of planets over your natal (radix) chart. This shows how transiting planets are affecting your birth chart right now.

Transit charts are useful for:

  • Seeing current planetary activity relative to your birth chart
  • Identifying aspects between transit and natal planets
  • Tracking planetary transits over time
  • Understanding how cosmic events may affect you

To render a transit chart, provide both radix (natal) data and transit data to the same chart:

import { Chart } from '@astrodraw/astrochart'
// Your natal chart data
const radixData = {
planets: {
Sun: [12.45, 0],
Moon: [145.67, 0],
Mercury: [8.23, 0],
Venus: [35.12, 0],
Mars: [162.34, 0]
},
cusps: [315.45, 35.67, 65.23, 92.45, 125.67, 155.89,
135.45, 215.67, 245.23, 272.45, 305.67, 335.89]
}
// Current planetary positions (transit data)
const transitData = {
planets: {
Sun: [155.67, 0], // current Sun position
Moon: [245.23, 0], // current Moon position
Mercury: [122.34, 0],
Venus: [198.56, 0],
Mars: [310.78, 0]
}
}
const chart = new Chart('chart', 600, 600)
chart.radix(radixData).transit(transitData)

When you call .transit(), AstroChart renders:

  • The inner ring shows your natal (radix) planets
  • The outer ring shows the transit planets
  • The houses and aspects remain from the natal chart
  • Transit-to-natal aspects can be calculated automatically

Here’s a complete example with more planets:

import { Chart } from '@astrodraw/astrochart'
const radixData = {
planets: {
Sun: [12.45, 0],
Moon: [145.67, 0],
Mercury: [8.23, 0],
Venus: [35.12, 0],
Mars: [162.34, 0],
Jupiter: [298.56, 0],
Saturn: [245.78, 0],
Uranus: [178.90, 0],
Neptune: [210.12, 0],
Pluto: [238.34, 0],
NNode: [95.45, 0]
},
cusps: [315.45, 35.67, 65.23, 92.45, 125.67, 155.89,
135.45, 215.67, 245.23, 272.45, 305.67, 335.89]
}
const transitData = {
planets: {
Sun: [155.67, 0], // Sun has moved 143.22°
Moon: [245.23, 0], // Moon has moved 99.56°
Mercury: [122.34, 0],
Venus: [198.56, 0],
Mars: [310.78, 0],
Jupiter: [15.67, 0],
Saturn: [288.90, 0],
Uranus: [205.12, 0],
Neptune: [245.34, 0],
Pluto: [275.67, 0],
NNode: [85.45, 0]
}
}
const chart = new Chart('chart', 600, 600)
chart.radix(radixData).transit(transitData)

Transit planets can also be retrograde — pass a negative velocity as the second element:

const transitData = {
planets: {
Mercury: [122.34, -1.2], // retrograde transit (negative velocity)
Venus: [198.56, 1.1], // direct transit (positive velocity)
Mars: [310.78, -0.8] // retrograde transit (negative velocity)
}
}

You can draw transit-to-natal aspects on the chart:

const chart = new Chart('chart', 600, 600)
const transit = chart.radix(radixData).transit(transitData)
transit.aspects() // Shows aspects between transit and natal planets

See a live transit chart with both natal and transit planets:

To update the transit planets (e.g., for a different date/time), call .transit() again with new data:

// Initial transit
const transit = radix.transit(transitData)
// Later, update to a different date
transit = radix.transit(newTransitData)

Or use .animate() for a smooth animation between transit states (see Animation Guide).

Renders a transit ring and returns a Transit instance.

Parameters:

  • dataAstroData object with transit planets. Note: Transit data only needs planets; cusps are taken from the radix.

Returns: Transit instance

Methods on Transit:

  • aspects() — Calculate and draw transit-to-natal aspects
  • animate(data, duration, callback) — Animate to new transit positions
  • on(eventName, callback) — Add click/hover listeners

Do I need to recalculate aspects? Yes, aspects are calculated between transit and natal planets. Call .aspects() after rendering the transit.

Can I have multiple transit rings? Currently, one radix supports one transit ring. For multiple overlays, consider rendering separate charts or using custom SVG rendering.

How do I get current planetary positions? You need an ephemeris calculator (Swiss Ephemeris, Skyfield, etc.). AstroChart only renders positions; it does not calculate them.