2014-10-31 3 views
0

Я хочу нарисовать сегмент линии, соединяющий две точки на фигуре FITS.Как нарисовать сегмент линии на фигуре FITS с использованием APLpy или python 2.7?

(x, y) координаты этих точек (200 250) & (300,400).

Я использую APLpy для этого.

Мой код:

import matplotlib.pyplot as plt 
import aplpy 
import numpy as np 

fig = aplpy.FITSFigure('test.fits') 
fig.show_grayscale() 

a=np.ndarray(shape=(2,2)) 
a[0][0]=200 
a[0][1]=250 
a[1][0]=300 
a[1][1]=400 

fig.show_lines(a) 

plt.show() 

Я использую "fig.show_lines()" функция APLpy описано на следующей веб-странице: http://aplpy.readthedocs.org/en/latest/quick_reference.html#shapes

Он говорит: 'списки пользовани Numpy массивов' как аргумент show_lines().

Но я получил следующее сообщение об ошибке:

Traceback (most recent call last): 
File "draw.py", line 16, in <module> 
fig.show_lines(a) 
File "<string>", line 2, in show_lines 
File "/home/swapnil/anaconda/lib/python2.7/site-packages/aplpy/decorators.py", line 25, in _auto_refresh 
return f(*args, **kwargs) 
File "/home/swapnil/anaconda/lib/python2.7/site-packages/aplpy/aplpy.py", line 1275, in show_lines 
xp, yp = wcs_util.world2pix(self._wcs, line[0, :], line[1, :]) 
IndexError: too many indices 

Любая помощь будет оценена.

Спасибо.

ответ

0

Я понимаю, что это должен быть список 2xN Numpy массивов:

x = np.array([[200], [300]]) 
y = np.array([[250], [400]]) 

fig.show_lines([x, y]) 

HTH,

Germán.

+0

На самом деле, я сделал тест и не рисовал линию. Я хотел бы посмотреть, что может сказать об этом @astrofrog. – skytux

0

Вам нужно сделать что-то вроде этого:

iline = np.array([[x1, x2],[y1,y2]]) 
fig.show_lines([iline], color = 'r') 

Где x1, x2, y1, y2 в правильных единицах измерения (для меня это было градусов)