2

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

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

我想根据一般坐标生成如图 1 所示的图,该图是在 MATLAB 中绘制的

matlabplot

现在,我只使用healpy将其绘制如下: 图2,基于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图 3

4

1 回答 1

1

恐怕healpy没有一个很好的方法来处理颜色条、刻度、刻度标签、轴等。

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

您还需要为此生成正确的 FITS 标头,这astropy将是正确的工具(如何操作 FITS 标头)。

一旦你有了它,你就可以使用 中的优秀WCSAxes框架astropy,它为你提供了大量有据可查的定制选项。

于 2018-08-02T17:34:29.680 回答