我想在拟合图形上画一条连接两点的线段。
(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任何帮助都将不胜感激。
谢谢。
发布于 2014-12-03 02:13:16
我知道它应该是一个2xN numpy数组列表:
x = np.array([[200], [300]])
y = np.array([[250], [400]])
fig.show_lines([x, y])HTH,
格尔曼。
发布于 2016-09-24 04:19:41
你需要这样做:
iline = np.array([[x1, x2],[y1,y2]])
fig.show_lines([iline], color = 'r')其中x1,x2,y1,y2是正确的单位(对我来说这是度)
发布于 2019-03-16 02:34:25
我最近遇到了一个类似的问题,答案似乎不起作用。您有没有尝试过使用
matplotlib.pyplot.plot ( usually called as plt.plot)?这对我来说很有效。
我使用以下命令打开了一个figure对象:
fig = aplpy.FITSFigure('fitsfile.fits')然后简单地做到了:
plt.plot([x1, x2], [y1, y2], color = 'r')而且它运行得非常好。我甚至不需要使用RA和Dec,而是直接使用使用astropy的all_world2pix()获得的像素坐标。我很确定aplpy也有类似的功能,但我从来没有尝试过。
https://stackoverflow.com/questions/26670750
复制相似问题