healpy:格式化子图

时间:2018-08-02 00:50:28

标签: python-3.x matplotlib healpy

我想使用healpy在一个图形中绘制许多子图。如何:

  1. 设置颜色条的位置吗?
  2. 设置颜色栏的刻度和刻度标签吗?
  3. 设置子图的位置和大小吗?

我想基于通用坐标生成如图1所示的图,该图是在MATLAB中绘制的

matlabplot

现在,我仅使用healpy将其绘制如下: Figure 2, based on healpy

产生图3(类似于图2)的类似代码如下:

import numpy as np
import healpy as hp

degree = 4
nside = 2**degree
num_Pixel = hp.nside2npix(nside)

m = np.arange(num_Pixel)

margins = [[0.02,0,0,0],[0.01,0,0,0],[0.01,0,0.01,0],
        [0.02,0,0,0],[0.01,0,0,0],[0.01,0,0.01,0],
        [0.02,0.05,0,0],[0.01,0.05,0,0],[0.01,0.05,0.01,0]]

title = [
    'Equinox', 'Jun. Solstice', 'Dec. Solstice',
    '','','','','','']

for ifig in range(1,10):
    if ifig < 7:
       hp.cartview(
           m, sub=330+ifig, margins=margins[ifig1],
           cbar=False, title=title[ifig-1])
    else:
       hp.cartview(
           m, sub=330+ifig, margins=margins[ifig-1],
           cbar=True, title=title[ifig-1])

代码产生了数字3 figure 3

1 个答案:

答案 0 :(得分:0)

恐怕healpy并没有很好的方法来处理颜色条,刻度,刻度标签,坐标轴等。

最好的方法是根据您的HEALPix地图生成FITS图像(例如,使用hp.cartview(..., return_projected_map=True)或使用reproject包)。

您还需要为此生成正确的FITS标头,astropy将是正确的工具(how-to manipulate FITS headers)。

一旦有了这些,就可以在astropy中使用出色的WCSAxes框架,它为您提供了许多有据可查的自定义选项。