【发布时间】:2019-05-08 18:15:40
【问题描述】:
我使用numpy.gradient 来计算标量场图的梯度图。我想我不太了解numpy.gradient,所以我可能会生成不正确的渐变图。我在下面发布我的代码和生成的地图:
from astropy.io import fits
import matplotlib.pyplot as plt
import numpy as np
subhdu = fits.open('test_subim.fits')[0]
subhdu = subhdu.data
fig = plt.figure(1, figsize = (30,30))
ax = fig.add_axes([0.1,0.7,0.5,0.2])
xr = np.arange(0, subhdu.shape[1], 1)
yr = np.arange(0, subhdu.shape[0], 1)
xx, yy = np.meshgrid(xr,yr)
dx, dy = np.gradient(subhdu.astype('float'))
im = ax.imshow(subhdu,origin='lower',cmap='bwr')
ax.quiver(xx,yy,dx,dy,scale=5,angles="uv",headwidth = 5)
fig.colorbar(im,pad=0)
ax.xaxis.set_ticks([])
ax.yaxis.set_ticks([])
我对结果地图的两件事感到困惑:
- 为什么蒙版区域中的渐变不指向绿色箭头;
- 为什么地图的边缘没有梯度计算?
如果有人能帮助我弄清楚我的困惑,我将不胜感激。如果你想玩我的数据'test_subim.fits',请访问my google drive。在播放之前,您必须安装包astropy,可能通过以下命令,pip install astropy。
再次非常感谢任何可以帮助我的人。
【问题讨论】: