Диаграмма рассеяния на участке неба с кругом

Вопросы и ответы

Я пытаюсь построить диаграмму разреженных точек на определенном участке неба и затем добавить к графику круг. Обратите внимание, что я не хочу изображать полное небо, только область вокруг точек данных. Координаты точек данных в градусах следующие:

ra = np.array([248.3, 249.8, 250.2, 250.5, 250.5])
dec = np.array([68.8, 67.7, 65.7, 72.2, 63.3])

Центр круга должен находиться в

ra1 = 270
dec1= 66

Похоже, что пакеты для этого (поскольку нам нужно учитывать кривизну неба!) будут astropy и regions. Но я просто не могу сделать это работающим. Этот пост здесь почти отвечает на то, что я хочу достичь, но он работает только с одной точкой, и я не вижу, как добавить больше точек. Спасибо за совет!

Ответ

Для создания диаграммы рассеяния с кругом на регионе неба, используя библиотеки astropy и regions, можно выполнить следующие шаги. Этот код сначала создаст диаграмму рассеяния для ваших данных, а затем добавит круг, центрированный на заданных координатах.

Вот полный код для выполнения этой задачи:

import numpy as np
import matplotlib.pyplot as plt
from astropy.coordinates import SkyCoord
import regions

# Данные для диаграммы рассеяния
ra = np.array([248.3, 249.8, 250.2, 250.5, 250.5])  # Прямое восхождение
dec = np.array([68.8, 67.7, 65.7, 72.2, 63.3])      # Склонение

# Координаты центра круга
ra_center = 270
dec_center = 66

# Создание диаграммы рассеяния
plt.figure(figsize=(8, 6))
plt.scatter(ra, dec, color='blue', label='Данные', s=100)

# Создание круга с использованием astropy и regions
circle_radius = 5  # Радиус круга в градусах
circle = regions.CircleSkyRegion(center=SkyCoord(ra_center, dec_center, unit='deg'), radius=circle_radius * u.deg)

# Отображение круга на диаграмме
circle_patch = circle.as_artist()
plt.gca().add_artist(circle_patch)
plt.gca().set_aspect('equal', adjustable='datalim')  # Автоматическая настройка пропорций
plt.xlim(ra.min() - 1, ra.max() + 1)  # Ограничение по оси X
plt.ylim(dec.min() - 1, dec.max() + 1)  # Ограничение по оси Y

# Настройка меток и заголовка
plt.xlabel('Прямое восхождение (градусы)')
plt.ylabel('Склонение (градусы)')
plt.title('Диаграмма рассеяния с кругом')
plt.grid()
plt.legend()
plt.show()

Пояснение:

  1. Импорт библиотек: Мы импортируем необходимые библиотеки, включая NumPy для работы с массивами, Matplotlib для построения графиков, а также SkyCoord из astropy.coordinates для работы с астрономическими координатами и regions для работы с областью на небе.

  2. Определение координат: Задаются данные для прямого восхождения (RA) и склонения (Dec), а также координаты центра круга.

  3. Создание диаграммы рассеяния: Используется функция plt.scatter() для создания диаграммы рассеяния.

  4. Создание и отображение круга: Создается объект CircleSkyRegion с заданным центром и радиусом. Далее круг добавляется на график.

  5. Настройка графика: Устанавливаются метки осей, заголовок графика и легенда. График отображается с использованием plt.show().

Этот код создаст красивую диаграмму рассеяния с вашими данными и окружит заданную область кругом, который центрирован на указанных координатах.

Оцените материал
Добавить комментарий

Капча загружается...