Я работаю с данными VLBI (очень длинная базовая интерферометрия, подобная той, которая использовалась для создания недавно теневого изображения черной дыры).Я строю изображение, которое взято из файла FITS.Посредством преобразования WCS оно преобразуется из пикселей в физические единицы, то есть в градусы.Кроме того, я поставил центральный пиксель в (0,0) в физических единицах.
Выглядит красиво, когда строится график.Но я хочу обозначить оси в мас (миллиарсекунды), потому что область изображения на небе очень мала.Поэтому вместо 0deg0'0.001 "или 0.001" я хотел бы видеть 1 в качестве метки.
Вот основной код для открытия фигуры:
wcs = WCS(i[0].header).celestial # where i is a FITS object
wcs.wcs.crval = [0,0] # to remove absolute coordinates of a source
fig = plt.figure()
ax = fig.add_subplot(111, projection = wcs)
ra, dec = ax.coords[0], ax.coords[1]
ax.xaxis.set_major_formatter(FuncFormatter(format_func))
, но, похоже, он еще не реализован для оси, которая не является "скалярной".=> поднять NotImplementedError () # выяснить, как поменять форматер,=> все метки тиков перекрываются в 0 от оси x.
- Шкала Addind вообще не работала (предположим, я все сделал правильно)
ax.ticklabel_format(useoffset = 1000, style = 'sci')
=> без изменений
Есть ли другие способы?преобразования меток оси для координатных данных в миллиарсекунды?