Skip to content
On this page

Chart(星盤) ​

Introduction ​

A Zi Wei Dou Shu(紫微斗數) chart, also called a natal chart(命盤), consists of twelve palaces and a central palace. Each palace’s Earthly Branch(地支) is fixed. The sequence begins with yin(寅), rather than zi(子), because the first lunar month corresponds to Yin(寅)—the convention called the first lunar month corresponds to yin(正月建寅). In iztro, yin palace(寅宮) has index 0, mao palace(卯宮) has index 1, and the remaining positions continue clockwise, as shown below:

si(巳)3woo(午)4wei(未)5shen(申)6
chen(辰)2central palaceyou(酉)7
mao(卯)1xu(戌)8
yin(寅)0chou(丑)11zi(子)10hai(亥)9

The central palace can display whatever information you choose and generally does not affect the chart’s interpretation. The surrounding twelve palaces(十二宮) hold stars(星曜), the four transformations(四化), fortune periods(運限), palace names, and other data. See palaces for more on palaces(宮位); this page focuses on the chart. A chart consists of palaces and stars. If these concepts are new to you, start with the basics.

After installing iztro, use the following code to import the chart module (astro) object. For iztro installation instructions, see Install iztro.

astro static methods ​

Use import to bring the object into your code before calling its static methods.

ts
import { astro } from "iztro";

Chart configuration and input validation ^2.6.2 ​

Charts returned by bySolar, byLunar, and withOptions retain the configuration and language used at creation. Changing global defaults or creating charts in other languages does not change an existing chart’s fortune-period(運限) or four-transformation(四化) analysis.

In withOptions, type is optional and defaults to the solar calendar; config overrides settings for that chart only. Chart-generation and date-helper methods default language to zh-CN when omitted, and choosing a language does not affect other calls. Supported values are zh-CN, zh-TW, en-US, ja-JP, ko-KR, and vi-VN.

The year must be from 1 to 9999, and the date must exist in the solar or lunar calendar. Date strings accept hyphens, slashes, or dots as separators and may include HH:mm or HH:mm:ss. Historical solar dates follow the underlying calendar’s Julian/Gregorian transition rules. Time indices must be integers from 0 to 12. Unknown gender, language, date type, or chart type, and non-boolean leap-month options, throw errors. Lunar dates are validated against the actual month length; isLeapMonth: true is ignored for a month with no leap counterpart.

See Configuration and plugins for configuration scope, the independent copy returned by getConfig(), and resetConfig().

astrolabeBySolarDate deprecated ​

This method was deprecated in v2.0.5. Use bySolar instead; parameters and return values are unchanged.

bySolar ^2.0.5 ​

  • Purpose

    Generates a chart from a solar-calendar date.

  • Definition

    ts
    export type bySolar = (
      solarDateStr: string,
      timeIndex: number,
      gender: GenderName,
      fixLeap: boolean = true,
      language: Language = "zh-CN"
    ) => FunctionalAstrolabe;
  • Parameters

    ParameterTypeRequired?Default valueDescription
    solarDateStrstringtrue-Gregorian date【YYYY-M-D】
    timeIndexnumbertrue-Birth-hour index [0–12], from early Zi hour (0) to late Zi hour (12)
    genderGenderNametrue-Gender【Male/Female】
    fixLeapbooleanfalsetrueWhether to adjust leap months. If true, the first half is assigned to the preceding month and the second half to the following month.
    languageLanguagefalsezh-CNThe returned data uses the specified language. Supported values are zh-CN, zh-TW, en-US, ko-KR, ja-JP, and vi-VN.
  • Return value

    FunctionalAstrolabe

  • Example

    ts
    import { astro } from "iztro";
    
    const astrolabe = astro.bySolar("2000-8-16", 2, "女", true, "zh-CN");

astrolabeByLunarDate deprecated ​

This method was deprecated in v2.0.5. Use byLunar instead; parameters and return values are unchanged.

byLunar ^2.0.5 ​

  • Purpose

    Generates a chart from a lunar-calendar date. The author recommends using bySolar directly, since this method first converts the lunar date to a solar date and then calls bySolar for the result.

  • Definition

    ts
    export type byLunar = (
      lunarDateStr: string,
      timeIndex: number,
      gender: GenderName,
      isLeapMonth: boolean = false,
      fixLeap: boolean = true,
      language?: Language
    ) => FunctionalAstrolabe;
  • Parameters

    ParameterTypeRequired?Default valueDescription
    lunarDateStrstringtrue-Lunar date [YYYY-M-D]. For lunar year 2000, month 7, day 17, pass 2000-7-17.
    timeIndexnumbertrue-Birth-hour index [0–12], from early Zi hour (0) to late Zi hour (12)
    genderGenderNametrue-Gender【Male/Female】
    isLeapMonthbooleanfalsefalseWhether the supplied lunar month is a leap month; ignored if that month has no leap counterpart.
    fixLeapbooleanfalsetrueWhether to adjust leap months. If true, the first half is assigned to the preceding month and the second half to the following month.
    languageLanguagefalsezh-CNThe returned data uses the specified language. Supported values are zh-CN, zh-TW, en-US, ko-KR, ja-JP, and vi-VN.
  • Return value

    FunctionalAstrolabe

  • Example

    ts
    import { astro } from "iztro";
    
    const astrolabe = astro.byLunar("2000-8-16", 2, "女", false, true, "zh-CN");

withOptions ^2.4.1 ​

  • Purpose

    Generates chart data through a convenient wrapper around bySolar and byLunar.

  • Definition

    ts
    type Option = {
      type?: 'solar' | 'lunar';
      dateStr: string;
      timeIndex: number;
      gender: GenderName;
      isLeapMonth?: boolean;
      fixLeap?: boolean;
      language?: Language;
      config?: Config;
      astroType?: AstroType;
    };
    
    export type withOptions = (
      option: Option
    ) => FunctionalAstrolabe;
  • Parameters

    ParameterTypeRequired?Default valueDescription
    typesolar | lunarfalsesolardate type
    dateStrstringtrue-Date of birth in YYYY-M-D format
    timeIndexnumbertrue-Birth-hour index [0–12], from early Zi hour (0) to late Zi hour (12)
    genderGenderNametrue-Gender【Male/Female】
    isLeapMonthbooleanfalsefalseWhether the supplied lunar month is a leap month; ignored if that month has no leap counterpart.
    fixLeapbooleanfalsetrueWhether to adjust leap months. If true, the first half is assigned to the preceding month and the second half to the following month.
    languageLanguagefalsezh-CNThe returned data uses the specified language. Supported values are zh-CN, zh-TW, en-US, ko-KR, ja-JP, and vi-VN.
    configConfigfalse-Overrides the brightness, four transformations and time-boundary settings only for the chart being created (^2.6.2).
    astroType ^2.5.0AstroTypefalseheavenChart type. Used to select the natal, earth or human chart only when config.algorithm is zhongzhou.
  • Return value

    FunctionalAstrolabe

  • Example

    ts
    import { astro } from "iztro";
    
    const astrolabe = astro.withOptions({
        type: 'solar',
        dateStr: '1999-12-29',
        timeIndex: 2,
        gender: 'female',
        isLeapMonth: false,
        fixLeap: true,
        language: 'zh-CN',
        config: { algorithm: 'zhongzhou' },
        astroType: 'earth'
      })

    Tips

    astroType accepts heaven, earth, or human. The default heaven is the Heaven Chart(天盤). earth uses the body palace(身宮) as the soul palace(命宮), while human uses the spirit palace(福德宮) as the soul palace. See AstroType.


getMajorStarBySolarDate ^1.2.1 ​

  • Purpose

    Retrieves the soul palace’s(命宮) major stars from a solar-calendar date.

  • Definition

    ts
    type getMajorStarBySolarDate = (
      solarDateStr: string,
      timeIndex: number,
      fixLeap: boolean = true,
      language?: Language,
    ) => string;
  • Parameters

    ParameterTypeRequired?Default valueDescription
    solarDateStrstringtrue-Gregorian date【YYYY-M-D】
    timeIndexnumbertrue-Birth-hour index [0–12], from early Zi hour (0) to late Zi hour (12)
    fixLeapbooleanfalsetrueWhether to adjust leap months. If true, the first half is assigned to the preceding month and the second half to the following month.
    languageLanguagefalsezh-CNThe returned data uses the specified language. Supported values are zh-CN, zh-TW, en-US, ko-KR, ja-JP, and vi-VN.
  • Example

    ts
    import { astro } from 'isztro';
    
    const result = getMajorStarBySolarDate('2023-4-7', 0);

getMajorStarByLunarDate ^1.2.1 ​

  • Purpose

    Retrieves the soul palace’s(命宮) major stars from a lunar-calendar date.

  • Definition

    ts
    type getMajorStarByLunarDate = (
      lunarDateStr: string,
      timeIndex: number,
      isLeapMonth: boolean = false,
      fixLeap: boolean = true,
      language?: Language,
    ) =>
  • Parameters

    ParameterTypeRequired?Default valueDescription
    lunarDateStrstringtrue-Lunar date [YYYY-M-D]. For lunar year 2000, month 7, day 17, pass 2000-7-17.
    timeIndexnumbertrue-Birth-hour index [0–12], from early Zi hour (0) to late Zi hour (12)
    isLeapMonthbooleanfalsefalseWhether the supplied lunar month is a leap month; ignored if that month has no leap counterpart.
    fixLeapbooleanfalsetrueWhether to adjust leap months. If true, the first half is assigned to the preceding month and the second half to the following month.
    languageLanguagefalsezh-CNThe returned data uses the specified language. Supported values are zh-CN, zh-TW, en-US, ko-KR, ja-JP, and vi-VN.
  • Example

    ts
    import { astro } from 'isztro';
    
    const result = getMajorStarByLunarDate('2023-2-17', 0, true, false);

getSignBySolarDate ^1.2.1 ​

  • Purpose

    Retrieves the Western zodiac sign from a solar-calendar date.

  • Definition

    ts
    type getSignBySolarDate = (
      solarDateStr: string,
      language?: Language
    ) => string;
  • Parameters

    ParameterTypeRequired?Default valueDescription
    solarDateStrstringtrue-Gregorian date【YYYY-M-D】
    languageLanguagefalsezh-CNThe returned data uses the specified language. Supported values are zh-CN, zh-TW, en-US, ko-KR, ja-JP, and vi-VN.
  • Example

    ts
    import { astro } from 'isztro';
    
    const result = getSignBySolarDate('2023-9-5');

getSignByLunarDate ^1.2.1 ​

  • Purpose

    Retrieves the Western zodiac sign from a lunar-calendar date.

  • Definition

    ts
    type getSignByLunarDate = (
      lunarDateStr: string,
      isLeapMonth?: boolean,
      language?: Language
    ) => string;
  • Parameters

    ParameterTypeRequired?Default valueDescription
    lunarDateStrstringtrue-Lunar date [YYYY-M-D]. For lunar year 2000, month 7, day 17, pass 2000-7-17.
    isLeapMonthbooleanfalsefalseWhether the supplied lunar month is a leap month; ignored if that month has no leap counterpart.
    languageLanguagefalsezh-CNThe returned data uses the specified language. Supported values are zh-CN, zh-TW, en-US, ko-KR, ja-JP, and vi-VN.
  • Example

    ts
    import { astro } from 'isztro';
    
    const result = getSignByLunarDate('2023-7-21');

getZodiacBySolarDate ^1.2.1 ​

  • Purpose

    Retrieves the Chinese zodiac animal from a solar-calendar date.

  • Definition

    ts
    type getZodiacBySolarDate = (solarDateStr: string, language?: Language) => string;
  • Parameters

    ParameterTypeRequired?Default valueDescription
    solarDateStrstringtrue-Gregorian date【YYYY-M-D】
    languageLanguagefalsezh-CNThe returned data uses the specified language. Supported values are zh-CN, zh-TW, en-US, ko-KR, ja-JP, and vi-VN.
  • Example

    ts
    import { astro } from 'isztro';
    
    const result = getZodiacBySolarDate('2023-2-20');

getZodiacByLunarYear ^1.2.1 ​

  • Purpose

    Retrieves the Chinese zodiac animal for a lunar-calendar year.

  • Definition

    ts
    type getZodiacByLunarYear = (year: number, language?: Language) => string;
  • Parameters

    ParameterTypeRequired?Default valueDescription
    yearnumbertrue-Lunar-calendar year
    languageLanguagefalsezh-CNThe returned data uses the specified language. Supported values are zh-CN, zh-TW, en-US, ko-KR, ja-JP, and vi-VN.
  • Example

    ts
    import { astro } from 'isztro';
    
    const result = getZodiacByLunarYear(2023);

Classes and analysis methods ​

Development suggestions

Use astro’s static methods to obtain data rather than constructing FunctionalAstrolabe manually.

FunctionalAstrolabe ​


implements IFunctionalAstrolabe extends Astrolabe

This class inherits its properties from Astrolabe and adds methods for chart analysis. bySolar() and byLunar() return instances of this class.

  • Interface definition

    ts
    interface IFunctionalAstrolabe extends Astrolabe {
      toJSON: () => Astrolabe;
      use(plugin: Plugin): void;
      horoscope: (date?: string | Date, timeIndex?: number) => Horoscope;
      decadalList: () => DecadalHoroscope[];
      yearlyList: (indexOrName: number | PalaceName) => YearlyHoroscope[];
      monthlyList: (year: number, fixLeap?: boolean) => MonthlyHoroscope[];
      palace: (indexOrName: number | PalaceName) => IFunctionalPalace | undefined;
      surroundedPalaces: (indexOrName: number | PalaceName) => SurroundedPalaces;
      isSurrounded: (
        indexOrName: number | PalaceName,
        stars: StarName[]
      ) => boolean;
      isSurroundedOneOf: (
        indexOrName: number | PalaceName,
        stars: StarName[]
      ) => boolean;
      notSurrounded: (
        indexOrName: number | PalaceName,
        stars: StarName[]
      ) => boolean;
      hasMutagenInSurroundedPalace: (
        indexOrName: number | PalaceName,
        mutagen: Mutagen
      ) => boolean;
      hasMutagenInOppositePalace: (
        indexOrName: number | PalaceName,
        mutagen: Mutagen
      ) => boolean;
    }
  • Properties

    Reference Astrolabe

  • Methods

    toJSON() ^2.6.0 ​

    • Purpose

      Converts the functional chart to a plain JSON object. Analysis methods, plugin functions, and runtime references are excluded; circular references are safely ignored.

    • Definition

      ts
      type toJSON = () => Astrolabe;
    • Parameters

      None

    • Return value

      Astrolabe

    • Example

      ts
      import { astro } from "iztro";
      
      const astrolabe = astro.bySolar("2000-8-16", 2, "女");
      const data = astrolabe.toJSON();

    use() ^2.3.0 ​

    • Purpose

      Applies a plugin to the current chart instance. Unlike astro.loadPlugin(), use() affects only this instance.

    • Definition

      ts
      type use = (plugin: Plugin) => void;
    • Parameters

      ParameterTypeRequired?Default valueDescription
      pluginPlugintrue-Plugin function to apply to the current chart
    • Return value

      void

    • Example

      ts
      import { astro, FunctionalAstrolabe } from "iztro";
      
      interface IAstrolabe extends FunctionalAstrolabe {
        soulPalaceName: () => string;
      }
      
      function soulPalacePlugin(this: IAstrolabe) {
        this.soulPalaceName = () => this.palace("命宫")?.name ?? "";
      }
      
      const astrolabe = astro.bySolar<IAstrolabe>("2000-8-16", 2, "女");
      astrolabe.use(soulPalacePlugin);
      const name = astrolabe.soulPalaceName();

    horoscope() ^0.2.0 ​

    • Purpose

      Retrieves fortune-period(運限) data. To calculate it for the current moment, omit all arguments; the method uses the system time at the call.

      Note

      • If date is a date-only string in YYYY-M-D format and timeIndex is omitted, the time used for date is early Zi hour on that date, for the hourly(流時) period.
      • If date contains a time in YYYY-M-D HH format or is a Date instance, and timeIndex is omitted, the hour in date is converted to a traditional time slot for the hourly(流時) period.
      • If supplied, timeIndex takes precedence over the time derived from the date.
    • Definition

      ts
      type horoscope = (date?: string | Date, timeIndex?: number) => FunctionalHoroscope;
    • Parameters

      ParameterTypeRequired?Default valueDescription
      datestring | Datefalsenew Date()Gregorian date【YYYY-M-D】
      timeIndexnumberfalse0Time-slot index [0–12]
    • Return value

      FunctionalHoroscope

      Note

      In v1.3.4, the return type changed from Horoscope to FunctionalHoroscope. Existing usage remains backward compatible.

    • Example

      ts
      import { astro } from "iztro";
      
      const astrolabe = astro.astrolabeBySolarDate("2000-8-16", 2, "女", true, "zh-CN");
      const horoscope = astrolabe.horoscope();

    decadalList() ^2.6.0 ​

    • Purpose

      Returns decadal periods(大限) in order of onset. Array index 0 is the first period. Each entry contains the corresponding palace, starting and ending nominal ages and years, stem and branch, four transformations(四化), transit stars(流曜), and the period’s twelve palaces.

    • Definition

      ts
      type decadalList = () => DecadalHoroscope[];
    • Return value

      DecadalHoroscope[]

    • Example

      ts
      const decadals = astrolabe.decadalList();
      const firstDecadal = decadals[0];

    yearlyList() ^2.6.0 ​

    • Purpose

      Returns the annual periods(流年) within a decadal period(大限), selected by its index or natal-palace name. Each entry includes nominal age, year, annual stem and branch, four transformations(四化), transit stars(流曜), and the twelve annual palaces.

    • Definition

      ts
      type yearlyList = (
        indexOrName: number | PalaceName
      ) => YearlyHoroscope[];
    • Parameters

      ParameterTypeRequired?Default valueDescription
      indexOrNamenumber | PalaceNametrue-Decadal-period index (0 is the first period), or a natal-palace name
    • Return value

      YearlyHoroscope[]

    • Example

      ts
      const firstDecadalYearlies = astrolabe.yearlyList(0);
      const soulPalaceYearlies = astrolabe.yearlyList("命宫");

    monthlyList() ^2.6.0 ​

    • Purpose

      Returns monthly periods(流月) for the specified year. Each entry contains nominal age, year, month, monthly stem and branch, four transformations(四化), transit stars(流曜), and the twelve monthly palaces.

      Leap-month rules: a year without a leap month returns 12 entries. With a leap month, fixLeap=false returns 13 entries; fixLeap=true splits the leap month into days 1–15 and days 16 through month-end, returning 14 entries.

    • Definition

      ts
      type monthlyList = (
        year: number,
        fixLeap?: boolean
      ) => MonthlyHoroscope[];
    • Parameters

      ParameterTypeRequired?Default valueDescription
      yearnumbertrue-Annual-period year; use the yearlyList() return item’s year field directly.
      fixLeapbooleanfalsetrueWhether to calculate the first and second halves of a leap month separately
    • Return value

      MonthlyHoroscope[]

    • Example

      ts
      const year = astrolabe.yearlyList(0)[0].year;
      const adjusted = astrolabe.monthlyList(year);
      const unadjusted = astrolabe.monthlyList(year, false);

    star() ^1.2.0 ​

    • Purpose

      Retrieves a star’s object instance by name.

    • Definition

      ts
      type star = (starName: StarName) => IFunctionalStar;
    • Parameters

      ParameterTypeRequired?Default valueDescription
      starNameStarNametrue-Star name
    • Return value

      FunctionalStar

    • Example

      ts
      import { astro } from "iztro";
      
      const astrolabe = astro.astrolabeBySolarDate("2000-8-16", 2, "女", true, "zh-CN");
      
      // 获取 `紫微星` 所在宫位
      const star = astrolabe.star("紫微");

    palace() ^1.0.0 ​

    • Purpose

      Retrieves the requested palace(宮位) from the chart.

    • Definition

      ts
      type palace = (
        indexOrName: number | PalaceName
      ) => IFunctionalPalace | undefined;
    • Parameters

      ParameterTypeRequired?Default valueDescription
      indexOrNamenumber | PalaceNametrue-Palace index or name
    • Return value

      FunctionalPalace

    • Example

      ts
      import { astro } from "iztro";
      
      const astrolabe = astro.astrolabeBySolarDate("2000-8-16", 2, "女", true, "zh-CN");
      
      // 获取 `寅宫`
      const palace = astrolabe.palace(0);
      
      // 获取 `命宫`
      const soulPalace = astrolabe.palace("命宫");

    surroundedPalaces() ^1.1.0 ​

    • Purpose

      Retrieves trine and opposite palaces(三方四正): the supplied target palace, its opposite palace(對宮), and its relative wealth position(財帛位) and career position(官祿位), four palaces in total. palace and position are distinct concepts; see palaces for their meanings and the surrounding-palace relationships.

    • Definition

      ts
      type surroundedPalaces = (
        indexOrName: number | PalaceName
      ) => IFunctionalSurpalaces;
    • Parameters

      ParameterTypeRequired?Default valueDescription
      indexOrNamenumber | PalaceNametrue-Palace index or name
    • Return value

      FunctionalSurpalaces

    • Example

      ts
      import { astro } from "iztro";
      
      const astrolabe = astro.astrolabeBySolarDate("2000-8-16", 2, "女", true, "zh-CN");
      
      // 获取 `寅宫` 三方四正
      const surroundedPalaces = astrolabe.surroundedPalaces(0);
      
      // 获取 `命宫` 三方四正
      const surroundedPalacesOfSoul = astrolabe.surroundedPalaces("命宫");

    isSurrounded() ^1.0.0 deprecated ​

    Note

    This method was deprecated in v1.2.0. Use the have() method of FunctionalSurpalaces instead.

    • Purpose

      Checks the palace and its trine and opposite palaces(三方四正) for the requested stars(星曜). It returns true only when all requested stars are present.

    • Definition

      ts
      type isSurrounded = (
        indexOrName: number | PalaceName,
        stars: StarName[]
      ) => boolean;
    • Parameters

      ParameterTypeRequired?Default valueDescription
      indexOrNamenumber | PalaceNametrue-Palace index or name
      starsStarName[]true-Array of star names
    • Return value

      boolean

    • Example

      ts
      import { astro } from "iztro";
      
      const astrolabe = astro.astrolabeBySolarDate("2000-8-16", 2, "女", true, "zh-CN");
      
      // 判断 `寅宫` 三方四正是否含有 `天府` 星、`红鸾` 星和 `禄存` 星
      const palace = astrolabe.isSurrounded(0, ["天府", "红鸾", "禄存"]);
      
      // 判断 `命宫` 三方四正是否含有 `天府` 星、`红鸾` 星和 `禄存` 星
      const soulPalace = astrolabe.isSurrounded("命宫", ["天府", "红鸾", "禄存"]);

    isSurroundedOneOf() ^1.1.0 deprecated ​

    Note

    This method was deprecated in v1.2.0. Use the haveOneOf() method of FunctionalSurpalaces instead.

    • Purpose

      Checks whether the palace and its trine and opposite palaces(三方四正) contain any one of the supplied stars. At least one is enough to return true.

    • Definition

      ts
      type isSurroundedOneOf = (
        indexOrName: number | PalaceName,
        stars: StarName[]
      ) => boolean;
    • Parameters

      ParameterTypeRequired?Default valueDescription
      indexOrNamenumber | PalaceNametrue-Palace index or name
      starsStarName[]true-Array of star names
    • Return value

      boolean

    • Example

      ts
      import { astro } from "iztro";
      
      const astrolabe = astro.astrolabeBySolarDate("2000-8-16", 2, "女", true, "zh-CN");
      
      // 判断 `寅宫` 三方四正是否含有 `天府` 星、`红鸾` 星和 `禄存` 星中的一颗
      const palace = astrolabe.isSurroundedOneOf(0, ["天府", "红鸾", "禄存"]);
      
      // 判断 `命宫` 三方四正是否含有 `天府` 星、`红鸾` 星和 `禄存` 星中的一颗
      const soulPalace = astrolabe.isSurroundedOneOf("命宫", ["天府", "红鸾", "禄存"]);

    notSurrounded() ^1.1.0 deprecated ​

    Note

    This method was deprecated in v1.2.0. Use the notHave() method of FunctionalSurpalaces instead.

    • Purpose

      Checks whether the palace and its trine and opposite palaces(三方四正) do not contain any requested stars. All requested stars must be absent for it to return true.

    • Definition

      ts
      type notSurrounded = (
        indexOrName: number | PalaceName,
        stars: StarName[]
      ) => boolean;
    • Parameters

      ParameterTypeRequired?Default valueDescription
      indexOrNamenumber | PalaceNametrue-Palace index or name
      starsStarName[]true-Array of star names
    • Return value

      boolean

    • Example

      ts
      import { astro } from "iztro";
      
      const astrolabe = astro.astrolabeBySolarDate("2000-8-16", 2, "女", true, "zh-CN");
      
      // 判断 `寅宫` 三方四正是否不含有 `天府` 星、`红鸾` 星和 `禄存` 星
      const palace = astrolabe.notSurrounded(0, ["天府", "红鸾", "禄存"]);
      
      // 判断 `命宫` 三方四正是否不含有 `天府` 星、`红鸾` 星和 `禄存` 星
      const soulPalace = astrolabe.notSurrounded("命宫", ["天府", "红鸾", "禄存"]);

© 2025 iztro.com All rights reserved.
Related site: 紫微派