0

我想在 FITS 图形上绘制连接两个点的线段。

(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() 

我正在使用以下网页上描述的 APLpy 的“fig.show_lines()”函数: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

任何帮助将不胜感激。

谢谢。

4

3 回答 3

0

我知道它应该是一个2xNnumpy 数组的列表:

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

fig.show_lines([x, y])

高温下,

德语。

于 2014-12-02T18:13:16.490 回答
0

你需要做这样的事情:

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

其中x1, x2, y1,y2的单位是正确的(对我来说这是度数)

于 2016-09-23T20:19:41.343 回答
0

我最近遇到了类似的问题,答案似乎不起作用。您是否尝试过使用

    matplotlib.pyplot.plot ( usually called as plt.plot)?

这对我有用。

我使用以下方法打开了一个图形对象:

    fig = aplpy.FITSFigure('fitsfile.fits')

然后简单地做了:

    plt.plot([x1, x2], [y1, y2], color = 'r')

它工作得很好。我什至不必使用 RA 和 Dec,而是直接使用了使用 astropy 的 all_world2pix() 获得的像素坐标。我很确定 aplpy 有一个等价物,但我从未尝试过。

于 2019-03-15T18:34:24.580 回答