从gif来看,这幅图像似乎是假彩色的,这是一个选择正确颜色贴图的问题。我不能说python中是否有与您链接的颜色对应的颜色映射,但我们可以找到非常接近的颜色映射,重新创建图像中的所有功能:
fig = aplpy.FITSFigure('synop_Ml_0.2104.fits')
fig.show_colorscale(vmin=-60, vmax=60, cmap='hot')
这显示了以下内容(注意
aplpy
不理解此坐标系,因此它以像素坐标绘制图形):
问题的第二部分比较棘手,我无法完全回答。首先,您需要将卡林顿时间转换为经度,将正弦纬度转换为度,然后绘制轴标签的新值,而不是旧标签,或者将新值绘制为旧标签旁边的寄生轴(您可以参考寄生轴示例
here
)。
现在看起来卡林顿时间自1853年11月9日以来只旋转了几度,x轴的跨度正好是360,所以我假设转换只是偏移757079.95,即左边缘的x轴值。通过查看地图的像素跨度与坐标跨度的对应关系,我们可以在世界坐标上再次检查它:
In [88]: fig._wcs.wcs_pix2world(fig._ax1.get_xlim(), fig._ax1.get_ylim(), origin=1)
Out[88]: [array([757439.95, 757079.95]), array([-1., 1.])]
xaxis边的值757079.95和757439.95的差值正好是360度。
那么我们可以用一些
matplotlib
手动偏移坐标值以使其从零变为360,并使X轴与gif图像匹配的技巧:
# using hidden attributes is non-pythonic but aplpy does not leave us other options
ax = fig._ax1
x_range = ax.get_xlim()
new_ticklabels = np.arange(60, 361, 60)
new_tick_positions = new_ticklabels / 360. * x_range[1] + x_range[0]
ax.set_xticks(new_tick_positions)
ax.set_xticklabels(new_ticklabels)
fig.axis_labels.set_xtext('Carrington Longitude')
请记住
aplpy公司
是一个用于绘制天体坐标(而非太阳坐标)的库,因此使轴变换正常工作可能是一个相当痛苦的过程。另一种可能更好的方法是使用
sunpy
,一条巨蟒
library
太阳物理学。然而,我从未使用过它,它似乎为这个特定的fits文件抛出了一个错误。看起来您需要修改fits文件的标题以正确读取坐标。也许你可以联系
阳光明媚
社区是否要使用该库?