Background. My best friend passed away last week. He's been working on the HUD for the new NASA spacesuit and has always been fascinated with space. I'm putting together his memorial service and would like to include a map of space highlighting the region around earth that from 10 light days to 36 light years, 2 light months, and 2 light days ago to highlight that anyone in that range would look back on to an Earth where he was still with us, highlighting that he'll never really be gone as long as his light is reflecting back into the universe.

I just have no idea where to find something that would work.

  • 11
    $\begingroup$ Beautiful idea. Some 50 light year radius maps I found that you could use as a base: number 1, number 2, number 3. Btw the star Beta Leonis will see your friend being born in a few days :D $\endgroup$
    – KarlKastor
    Apr 22 at 20:56
  • 7
    $\begingroup$ Here is a quick edit I did for you showing the 36 light years area in purple: i.imgur.com/Z0adHc9.png $\endgroup$
    – KarlKastor
    Apr 22 at 21:29
  • 5
    $\begingroup$ Thank you so much! Once I stop crying, I'll look closer. This means more than you know. $\endgroup$ Apr 22 at 21:55
  • 7
    $\begingroup$ @KarlKastor would you consider making your comments into an answer? I think this question deserves one and yours is good. (An answer appeared as I was writing this comment, but I still think yours ought to be one.) $\endgroup$ Apr 23 at 0:11
  • 4
    $\begingroup$ My condolences. Your friend was young. That's a really beautiful thought by the way: there's a spherical shell in space for each one of us. $\endgroup$ Apr 23 at 13:26

5 Answers 5


My sincere condolences, your thought is so touching 😢 🙏❤️

You can use this visualization from NASA, NASA Eyes.

Originally intended to locate habitable exo-planets in our galaxy, you can easily scroll in/out and the distance from the Sun will show up on the left side in light years!

This way, you can see which stars and which exoplanets, possible good candidates for life, are within your intended radius!

You can also view the sky from a specific location on Earth, but that will not have a limit of the distance. enter image description here

enter image description here

enter image description here


Not a complete answer, but here are some examples of

  1. how to use a log scale to represent something that spans many powers of ten
  2. how to show distances along a 1D line and in "3D" in a 2D image.

This is what one and ten light days and four light years look like, on a log scale, hand-draw approximately. It's modified from https://commons.wikimedia.org/wiki/File:PIA17046_-_Voyager_1_Goes_Interstellar.jpg

enter image description here

This goes out to 20 light years, from https://spacedoutclassroom.com/2013/05/05/the-nearby-stars/

enter image description here

and this to 3.5 parsecs (~11.4 light years) from Astronomy SE's Orientation of local star map (where it is sourced from https://uh.edu/%7Ejclarage/astr3131/lectures/9/9.html)

enter image description here

  • 1
    $\begingroup$ Outstanding examples of 3D mapping in the last two images, just what is needed. Bravo. $\endgroup$
    – Fattie
    Apr 25 at 10:53

It's a really beautiful thought. Thanks for the idea!


Here's a python script. It outputs the brightest stars which can still see your friend. It requires skyfield and pandas. UPDATE: It also displays the stars in an interactive Earth-centric 3D map:


The inputs are:

  • name
  • range of dates
  • max number of stars
For a given range of dates, outputs the brightest stars
which can see the Earth during this period, and displays them in a 3D plot
import math
from datetime import date, timedelta
from skyfield.api import load
from skyfield.data import hipparcos
from skyfield.named_stars import named_star_dict
import numpy as np
import matplotlib.pyplot as plt
from pandas import DataFrame

NAME = "Your friend"
FROM_DATE = date(2024 - 36, 4 - 2, 23 - 2)
TO_DATE = date(2024, 4, 23 - 10)

DAYS_IN_A_YEAR = 365.25
DEG = math.pi / 180

def load_stars() -> DataFrame:
    # Load Hipparcos data
    with load.open(hipparcos.URL) as f:
        df = hipparcos.load_dataframe(f)

    # Parallax is used in order to estimate distance to Earth
    df = df[df.parallax_mas > 0]

    df["parsec"] = 1000 / df.parallax_mas
    df["ly"] = df.parsec * PARSEC_TO_LIGHTYEAR

    df["x"] = df.ly * np.cos(df.ra_degrees * DEG) * np.cos(df.dec_degrees * DEG)
    df["y"] = df.ly * np.sin(df.ra_degrees * DEG) * np.cos(df.dec_degrees * DEG)
    df["z"] = df.ly * np.sin(df.dec_degrees * DEG)

    hip_to_name = {v: k for k, v in named_star_dict.items()}

    def get_star_name(hip):
        return hip_to_name.get(hip, f"HIP{hip}")

    df["name"] = df.index.map(get_star_name)
    df["brightness"] = df.magnitude.apply(lambda mag: 100 ** (-mag / 5))
    return df

def get_stars_in_shell(when: date, from_date: date, to_date: date):
    df = load_stars()

    min_ly = (when - to_date).days / DAYS_IN_A_YEAR
    max_ly = (when - from_date).days / DAYS_IN_A_YEAR

    stars_in_shell = df[(min_ly <= df.ly) & (df.ly <= max_ly)].sort_values("magnitude")

    found_stars = len(stars_in_shell.index)

    print(f"{found_stars} stars have been found.")

    return stars_in_shell

def render(name: str, stars: DataFrame, max_stars: int):

    fig = plt.figure(figsize=(12, 12))
    ax = fig.add_subplot(projection="3d")

        s=stars.brightness * 30,

    ax.text(0, 0, 0, name)

    for star in stars[:max_stars].itertuples():
        ax.text(star.x, star.y, star.z, star.name, size=10, zorder=1, color="#ffd27d")

    # Zooming in. (10 standard, 1 max)
    ax.dist = 6


    plt.savefig(f"{name}_stars.png", dpi=120)


def main(
    name: str, from_date: date, to_date: date, max_stars: int, when: date = date.today()
    stars_in_shell = get_stars_in_shell(when, from_date, to_date)

    for star in stars_in_shell[:max_stars].itertuples():
        past_date = when - timedelta(days=star.ly * DAYS_IN_A_YEAR)
        print(f"{star.name} (mag {star.magnitude}) sees {name} on {past_date}.")

    render(name, stars_in_shell, max_stars)

if __name__ == "__main__":
    main("Galileo Galilei", date(1564, 2, 15), date(1642, 1, 8), MAX_STARS)

It outputs:

# 233 stars have been found.
Sirius (mag -1.44) sees your friend on 2015-09-18.
Toliman (mag -0.01) sees your friend on 2019-12-02.
Vega (mag 0.03) sees your friend on 1999-01-07.
Procyon (mag 0.4) sees your friend on 2012-11-27.
Altair (mag 0.76) sees your friend on 2007-07-17.
Pollux (mag 1.16) sees your friend on 1990-08-07.
Fomalhaut (mag 1.17) sees your friend on 1999-03-29.
HIP71681 (mag 1.35) sees your friend on 2019-12-02.
HIP81693 (mag 2.81) sees your friend on 1989-02-07.
HIP2021 (mag 2.82) sees your friend on 1999-12-08.

The output will change over time. Note that it's hard to measure the distance to some stars, so some results might be incorrect. At least the order of magnitude seems to match.

Another example:

# 8128 stars have been found.
Betelgeuse (mag 0.45) sees Galileo Galilei on 1596-11-03.
Adhara (mag 1.5) sees Galileo Galilei on 1593-06-14.
Atria (mag 1.91) sees Galileo Galilei on 1608-10-26.
Polaris (mag 1.97) sees Galileo Galilei on 1592-11-18.
Dschubba (mag 2.29) sees Galileo Galilei on 1622-08-21.
HIP81377 (mag 2.54) sees Galileo Galilei on 1566-03-22.
HIP68002 (mag 2.55) sees Galileo Galilei on 1639-09-09.
HIP59196 (mag 2.58) sees Galileo Galilei on 1628-12-18.
HIP52419 (mag 2.74) sees Galileo Galilei on 1585-05-02.
HIP84345 (mag 2.78) sees Galileo Galilei on 1641-12-10.

map for Galileo Galilei


I'm not sure it'd be useful for you but this Observable Universe Logarithmic Illustration is mind-blowing.


Not a map but a video, but to put the Earth in perspective with its surroundings of different size, Powers of Ten is great. Some parts or it are outdated by now, but in the range you want our knowledge was quite accurate 50 years ago.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.