Изменить масштабирование / Единицы цветовой шкалы в Matplotlib

Я строю несколько изображений FITS вместе с цветовой шкалой рядом с ними. Я в основном использую Aplpy для построения изображений, в том числе цветовой шкалы. Насколько я понимаю, Aplpy использует / полагается на matplotlib для своих механизмов построения графиков, поэтому, если есть способ сделать то, что я хочу, в Aplpy или Matplotlib, я думаю, это должно сработать.

Единицами изображения по умолчанию являются Jy (астрономическая единица). Но все значения довольно малы, где максимальная величина обычно составляет 0,01 Джи. Когда я показываю цветную полосу, метки тиков находятся в соответствующих единицах и имеют много нулей и занимают слишком много места.

Можно ли каким-то образом отобразить единицы измерения цветовой шкалы в виде мДж (1/1000 от джея)?

Например, тики в настоящее время: 0,000, 0,002, 0,004, ... Я хочу, чтобы они были: 0, 2, 4, ...

Решение может заключаться в том, чтобы либо масштабировать само изображение FITS, либо каким-либо образом настроить цветовую панель. В любом случае, я не знаю, как это сделать...

Заранее спасибо.

2 ответа

Я думаю, что есть много вариантов. Одним из них будет поставлять FuncFormatter на цветную полосу,

func = lambda x,pos: "{:g}".format(x*1000)
fmt = matplotlib.ticker.FuncFormatter(func)

plt.colorbar(..., format=fmt)

Теперь я не знаю, что возвращает Aplpy, и вопрос не показывает никакого кода, поэтому я не могу предоставить работающее решение для этого конкретного случая.

Быстрый и грязный обходной путь, который я придумал:

  1. Сделайте копию исходного изображения FITS
  2. Отредактируйте заголовок скопированного изображения, чтобы изменить обычный BSCALE= 1.0 на BSCALE= 1000.0 (я использовал edhead из WCStools, чтобы вручную отредактировать заголовок)
  3. Используйте изображение с отредактированным заголовком в качестве входных данных для APLpy.

Результатом является изображение, построенное в единицах mJy вместо Jy.

Было бы здорово иметь для этого подходящее решение, в идеале в рамках APLpy. Спасибо, что задали точный вопрос, с которым я застрял прямо сейчас!

Другие вопросы по тегам