Предотвращение переполнения matplotlib ax.annotate проекцией WCSPython

Программы на Python
Ответить
Anonymous
 Предотвращение переполнения matplotlib ax.annotate проекцией WCS

Сообщение Anonymous »

Диаграмма рассеяния с астропической проекцией WCS ограничена только xlim/ylim оси, даже если есть точки за пределами этого диапазона:

Код: Выделить всё

ra = 151.416293
dec = 12.115556

points = np.random.normal(loc=((ra,), (dec,)), size=(2, 20))

wcs = astropy.wcs.WCS(
{
"ctype1": "RA---SIN",
"ctype2": "DEC--SIN",
"crval1": ra,
"crval2": dec,
"crpix1": 1248.0,
"crpix2": 267.0,
"naxis1": 132,
"naxis2": 132,
},
naxis=2,
)

fig = plt.figure()
ax = fig.add_subplot(projection=wcs)
transform = ax.get_transform('fk5')
for i in range(points.shape[1]):
ax.scatter(*points, transform=transform)
ax.set_xlim(1246, 1247)
Изображение
Похоже, что это не относится к ax.annotate:

Код: Выделить всё

fig = plt.figure()
ax = fig.add_subplot(projection=wcs)
transform = ax.get_transform('fk5')
for i in range(points.shape[1]):
ax.scatter(*points, transform=transform)
ax.annotate(f'point number {i}', points[:, i],
xycoords=transform)
ax.set_xlim(1246, 1247)
Изображение
Без аргумента преобразования все ведет себя так, как я ожидаю, и переполнение отсекается:

Код: Выделить всё

fig = plt.figure()
ax = fig.add_subplot()
for i in range(points.shape[1]):
ax.scatter(*points)
ax.annotate(f'point number {i}', points[:, i])
ax.set_xlim(150, 152)
Изображение
Некоторые эксперименты показали, что эта проблема актуальна для любого преобразования, а не только для преобразований, связанных с wcs, но я недостаточно понимаю API преобразования, чтобы исследовать его дальше.
Как мне следует вырезать эти аннотации внеосевых осей? Я бы предпочел не выяснять пределы, сопоставлять их с системами координат и фильтровать вручную.

Подробнее здесь: https://stackoverflow.com/questions/798 ... projection
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»