Построение нестандартных осей
Я строю изображение, используя координаты RA и Dec. Изображение перекрывает точку (RA, Dec) = (0,0). Для оси Y (склонение) это хорошо, но для оси X, работающей в градусах, мне трудно построить это правильно.
Я хочу, чтобы график начинался с (RA, Dec) = (358, -2) и занимал четыре квадратных градуса до (2, 2). Есть ли способ заставить py thon/matplotlib понять, что 360 градусов = 0 градусов на оси x?
Вот как я начал:
lowerleft_ra = 358.
lowerleft_dec = -2.
lx = lowerleft_ra
ly = lowerleft_dec
uy = lowerleft_dec + 4.
ux = lowerleft_ra + 4.
plt.imshow(image, origin = 'lower', extent = [lx, ux, ly, uy])
Это делает интервал по оси X от 358 до 362, что не то, что я ищу. Затем я попытался изменить его следующим образом:
if lowerleft_ra + 4. > 360.:
ux = lowerleft_ra + 4. - 360.
else:
ux = lowerleft_ra + 4.
Но это только устанавливает ось X, работающую в обратном порядке от 358 до 2 градусов.
Как я могу заставить его идти 358, 359, 0, 1, 2?
1 ответ
Информация экстентов, переданная imshow
информирует matplotlib о размере объекта, который вы рисуете (масштаб, соотношение и т. д.). После того, как вы построили его, вы можете настроить оси вручную. Хотя я не думаю, что вы можете сказать matplotlib построить ось с нелинейными значениями, вы можете заменить метки тиков.
Я предлагаю создать шкалу от -2 до +2, а затем использовать следующий метод, чтобы применить метки тиков по своему вкусу:
plt.xticks([-2,-1,0,1,2], [358,359,0,1,2])
Или используя API
ax.set_xticks([-2,-1,0,1,2])
ax.set_xticklabels([358,359,0,1,2])
Это дает мне следующий сюжет: