Почему функции на проектируемом субплоте WCS находятся в неправильном месте в matplotlib? - PullRequest
0 голосов
/ 09 января 2019

У меня есть файл с данными об астрономическом объекте. Я могу построить это так:

from astropy.io import fits
from astropy.wcs import WCS

hdul = fits.open(fitsfilename)[0]

wcs = WCS(hdul.header)
fig = plt.figure(figsize=(12,12))
fig.add_subplot(111, projection=wcs)
plt.imshow(hdul.data)

Это работает, и производит хорошее изображение:

enter image description here

Я хотел бы добавить некоторые дополнительные функции к этому графику, который не работает. Например, давайте попробуем добавить круг до 119 °, -67 ° 30 '. Я расширяю код на:

plt.scatter([119],[-67.5],c='r',s=500)

Что я получаю:

enter image description here

Что на самом деле не то, что мы хотели, круг составляет около 118 ° 5 ', -67 ° 5', а не там, где он должен быть (119 °, -67 ° 30 ').

Что я делаю не так или как это исправить?


Примечание: когда я запускаю wcs = WCS(hdul.header), я получаю предупреждение:

ПРЕДУПРЕЖДЕНИЕ: VerifyWarning: Сообщения об ошибках проверки: [astropy.io.fits.verify] ПРЕДУПРЕЖДЕНИЕ: VerifyWarning: карта 'A_2_0' не является Стандарт FITS (недопустимая строка значения: '3.29341755408e-05'). Исправлена Карта A_2_0 для соответствия стандарту FITS. [Astropy.io.fits.verify] ВНИМАНИЕ: VerifyWarning: Примечание: astropy.io.fits использует нулевые значения индексации. [astropy.io.fits.verify] ПРЕДУПРЕЖДЕНИЕ: VerifyWarning: Карта «A_1_1» не соответствует стандарту FITS (недопустимая строка значения: '1.51709339878e-05'). Исправлена ​​карта «A_1_1» для соответствия стандарту FITS. [astropy.io.fits.verify] ПРЕДУПРЕЖДЕНИЕ: VerifyWarning: карта 'A_0_2' не является Стандарт FITS (недопустимая строка значения: «5.17973753556e-06»). Исправлена Карта A_0_2 для соответствия стандарту FITS. [Astropy.io.fits.verify] ВНИМАНИЕ: VerifyWarning: карта 'B_2_0' не соответствует стандарту FITS (недействительно) строка значения: '2.97627426087e-06'). Исправлена ​​карта «B_2_0», чтобы соответствовать Подходит стандарт. [astropy.io.fits.verify] ПРЕДУПРЕЖДЕНИЕ: VerifyWarning: Карта «B_1_1» не соответствует стандарту FITS (недопустимая строка значения: '2.71948126373e-05'). Исправлена ​​карта «B_1_1» для соответствия стандарту FITS. [astropy.io.fits.verify] ПРЕДУПРЕЖДЕНИЕ: VerifyWarning: карта 'B_0_2' не является Стандарт FITS (недопустимая строка значения: '1.66848449653e-05'). Исправлена Карта «B_0_2» для соответствия стандарту FITS. [Astropy.io.fits.verify] ПРЕДУПРЕЖДЕНИЕ: VerifyWarning: карта AP_1_0 не соответствует стандарту FITS (недействительно строка значения: '1.79541533196e-06'). Исправлена ​​карта «AP_1_0» для соответствия Подходит стандарт. [astropy.io.fits.verify] ПРЕДУПРЕЖДЕНИЕ: VerifyWarning: Карта «AP_0_1» не соответствует стандарту FITS (недопустимая строка значения: '9.20624843151e-07'). Исправлена ​​карта «AP_0_1» для соответствия стандарту FITS. [astropy.io.fits.verify] ПРЕДУПРЕЖДЕНИЕ: VerifyWarning: карта 'AP_2_0' не является Стандарт FITS (недопустимая строка значения: '-3.29292923201e-05'). Исправлена Карта AP_2_0 для соответствия стандарту FITS. [Astropy.io.fits.verify] ПРЕДУПРЕЖДЕНИЕ: VerifyWarning: карта AP_1_1 не соответствует стандарту FITS (недействительно строка значения: '-1.51738446887e-05'). Исправлена ​​карта «AP_1_1» для удовлетворения Подходит стандарт. [astropy.io.fits.verify] ПРЕДУПРЕЖДЕНИЕ: VerifyWarning: Карта «AP_0_2» не соответствует стандарту FITS (недопустимая строка значения: '-5.18321445978e-06'). Исправлена ​​карта «AP_0_2» для соответствия стандарту FITS. [astropy.io.fits.verify] ПРЕДУПРЕЖДЕНИЕ: VerifyWarning: карта 'BP_1_0' не является Стандарт FITS (недопустимая строка значения: '8.99029048217e-07'). Исправлена Карта «BP_1_0» соответствует стандарту FITS. [Astropy.io.fits.verify] ВНИМАНИЕ: VerifyWarning: карта 'BP_0_1' не соответствует стандарту FITS (недействительно) строка значения: '1.15967736014e-06'). Исправлена ​​карта «BP_0_1» для соответствия Подходит стандарт. [astropy.io.fits.verify] ПРЕДУПРЕЖДЕНИЕ: VerifyWarning: Карта «BP_2_0» не соответствует стандарту FITS (недопустимая строка значения: '-2.97837492348e-06'). Исправлена ​​карта «BP_2_0» для соответствия стандарту FITS. [astropy.io.fits.verify] ПРЕДУПРЕЖДЕНИЕ: VerifyWarning: карта 'BP_1_1' не является Стандарт FITS (недопустимая строка значения: '-2.71998518336e-05'). Исправлена Карта «BP_1_1» соответствует стандарту FITS. [Astropy.io.fits.verify] ПРЕДУПРЕЖДЕНИЕ: VerifyWarning: карта «BP_0_2» не соответствует стандарту FITS (недействительно строка значения: '-1.66872388359e-05'). Исправлена ​​карта «BP_0_2» для соответствия Подходит стандарт. [astropy.io.fits.verify] ПРЕДУПРЕЖДЕНИЕ: VerifyWarning: Карта «WCSR_PRJ» не является стандартом FITS (недопустимая строка значения: «3.6679e-07»). Исправлена ​​карта WCSR_PRJ, соответствующая стандарту FITS. [астropy.io.fits.verify] ПРЕДУПРЕЖДЕНИЕ: VerifyWarning: карта 'WCSR_PIX' является не соответствует стандарту FITS (недопустимая строка значения: '8.2565e-05'). Исправлена Карта WCSR_PIX для соответствия стандарту FITS. [Astropy.io.fits.verify]

Так что это может быть актуально; Вопрос о том, как это исправить, до сих пор остается.

1 Ответ

0 голосов
/ 09 января 2019

Чтобы построить в мировые координаты , вам необходимо указать transform, например ::

ax = fig.gca()
ax.scatter([34], [3.2], transform=ax.get_transform('world'))

Как правило, вы можете игнорировать эти предупреждения заголовка FITS, поскольку ни одна из карт заголовка FITS там не связана с WCS (afaik).

...