Skip to content

Radix Chart

A radix chart (also called a natal or birth chart) is a snapshot of the sky at a specific moment in time. It shows the positions of planets and house cusps for a particular birth location.

AstroChart renders radix charts from an AstroData object containing:

  • Planets — Positions as degrees (0–360), keyed by planet name
  • House Cusps — Exactly 12 degree values representing houses 1–12

Here’s the simplest example:

import { Chart } from '@astrodraw/astrochart'
const data = {
planets: {
Sun: [12.45, 0],
Moon: [145.67, 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 chart = new Chart('chart', 600, 600)
chart.radix(data)

Planets are stored in a key-value object (Record<string, number[]>):

planets: {
Sun: [degrees, velocity]
// ^^^^^^^ 0–360
// ^^^^^^^^ optional: astrological velocity — negative = retrograde, positive or omitted = direct
}

Valid planet names:

  • Personal: Sun, Moon, Mercury, Venus, Mars
  • Social: Jupiter, Saturn
  • Generational: Uranus, Neptune, Pluto
  • Points: Chiron, Lilith, NNode (North Node), SNode (South Node), Fortune

Cusps must be an array of exactly 12 degree values:

cusps: [
315.45, // 1st house cusp (Ascendant)
35.67, // 2nd house cusp
65.23, // 3rd house cusp
92.45, // 4th house cusp (IC)
125.67, // 5th house cusp
155.89, // 6th house cusp
135.45, // 7th house cusp (Descendant)
215.67, // 8th house cusp
245.23, // 9th house cusp
272.45, // 10th house cusp (MC)
305.67, // 11th house cusp
335.89 // 12th house cusp
]

Passing fewer or more than 12 cusps will throw a validation error.

Here’s a complete example with all 15 standard planets and points:

import { Chart } from '@astrodraw/astrochart'
const data = {
planets: {
Sun: [12.45, 0], // direct
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],
Chiron: [125.67, 0],
Lilith: [145.23, 0],
NNode: [95.45, 0], // North Node
SNode: [275.45, 0], // South Node
Fortune: [325.67, 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 chart = new Chart('chart', 600, 600)
chart.radix(data)

A planet is retrograde when its astrological velocity is negative. Pass the velocity as the second element of the array — the library automatically renders an R symbol next to retrograde planets:

const data = {
planets: {
Mercury: [8.23, -1.5], // retrograde (negative velocity)
Venus: [35.12, 1.2], // direct (positive velocity)
Jupiter: [298.56, -0.3], // retrograde (negative velocity)
},
cusps: [ /* 12 values */ ]
}

Call .aspects() on the returned Radix instance to draw aspect lines between planets:

const chart = new Chart('chart', 600, 600)
const radix = chart.radix(data)
radix.aspects() // draws conjunction, square, trine, opposition lines

Aspects are calculated automatically using default orbs:

  • Conjunction: 10°
  • Square: 8°
  • Trine: 8°
  • Opposition: 10°

You can customize orbs via Settings.

See a complete radix chart in action:

Renders a radix chart and returns a Radix instance for further operations.

Parameters:

  • dataAstroData object with planets (object) and cusps (array of 12 numbers)

Returns: Radix instance

Methods on Radix:

  • aspects() — Draw aspect lines between planets
  • transit(data) — Overlay a transit ring
  • on(eventName, callback) — Add click/hover listeners