У меня та же проблема, я хочу построить 2d-массив в проекции Mollweide. Мой массив 2d представляет собой массив 180 * 360, использующий matplotlib.pyplot. imshow ось не следует за проекцией: ![введите здесь описание изображения](https://i.stack .imgur.com/VoPiW.png)
поэтому, чтобы решить эту проблему, я хочу использовать mollview healpy, но я не знаю, как преобразовать мои данные 2d-массива (180 * 360) в объект, который мог бы построить mollview.
В предыдущем ответе вы предполагаете, что данные представляют собой одномерный массив той же длины, что и тета и фи. Я попытался проверить это, сделав это:
test = np.ones((180,360))
data = test.reshape(180*360)
theta = []
phi = []
for i in range (360):
for j in range (180):
theta.append((j)*np.pi/180)
phi.append((i)*np.pi/180)
theta = np.asarray(theta)
phphi = np.asarray(y)
def make_map_vec(theta, phi, data):
assert len(theta) == len(phi) == len(data)
e1map = np.full(hp.nside2npix(NSIDE), hp.UNSEEN, dtype=np.float)
index = hp.ang2pix(NSIDE, theta, phi)
values = np.fromiter((np.sum(data[index==i]) for i in np.unique(index)), float, count=len(np.unique(index)))
e1map[np.unique(index)] = values
return e1map
map_test = make_map_vec(theta,phi,data)
hp.mollview(map_test,title="Mollview image RING")
Я получил :
![введите здесь описание изображения](https://i.stack.imgur.com/XKDkz.png)
что не правильно.
Знаете ли вы, есть ли другой способ получить карту из 2D-массива?
person
BOUYAHIAOUI Makarim
schedule
06.02.2020