gpt4 book ai didi

python - 使用 matplotlib 创建全天空投影的好奇(坏?)行为

转载 作者:太空宇宙 更新时间:2023-11-04 09:17:27 25 4
gpt4 key购买 nike

我正在尝试制作一个密度“全天空”图,它在 RA 中是完整的(即 0 到 360 度)但在 DEC 中是不完整的(比如从 -45 到 90 度)。如果我在没有任何投影的情况下绘制它是可以的,但是当我尝试使用“mollweide”投影进行绘制时,我不会恢复输入,但是如果我对代码做一点改动,我确实会恢复预期的行为(但是,我正如您将在示例中看到的那样,没有对此更改的连贯解释)。

让我们看一个独立的例子,它的输出更清晰:

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.backends.backend_agg
from math import pi

#array between 0 and 360 deg
RA = np.random.random(10000)*360
#array between -45 and 90 degrees. By construction!
DEC= np.random.random(10000)*135-45

fig = plt.Figure((10, 4.5))
ax = fig.add_subplot(111,projection='mollweide')
ax.grid(True)
ax.set_xlabel('RA')
ax.set_ylabel('DEC')

ax.set_xticklabels(np.arange(30,331,30))
hist,xedges,yedges = np.histogram2d(DEC,RA,bins=[90,180],range=[[-90,90],[0,360]])
#TO RECOVER THE EXPECTED BEHAVIOUR, I HAVE TO CHANGE -90 FOR -80 IN THE PREVIOUS LINE:
#hist,xedges,yedges = np.histogram2d(DEC,RA,bins=[90,180],range=[[-80,90],[0,360]])
#I DO NOT WHY!

extent = (-pi,pi,-pi/2.,pi/2.)
image = ax.imshow(hist,extent=extent,clip_on=False,aspect=0.5,origin='lower')

cb = fig.colorbar(image, orientation='horizontal')
canvas = matplotlib.backends.backend_agg.FigureCanvasAgg(fig)

fig.canvas.print_figure("image1.png")

输出图像是:[因为我是新来的,所以我不允许发布图片,所以我会发布一个链接,如果它不起作用,请给我写一封电子邮件,我可以与图片共享一个 Dropbox 文件夹;)]

Output Image that I am getting

你可以清楚地看到 RA 是正常的,所以它的范围在 0 到 360 之间,但是 DEC 的范围是从 -35 到 90 而不是 -45 到 90 .到目前为止,我不明白为什么我缺少 10 度。

但是,如果我对代码做一点改动,替换行

hist,xedges,yedges = np.histogram2d(DEC,RA,bins=[90,180],range=[[-90,90],[0,360]]

对于

hist,xedges,yedges = np.histogram2d(DEC,RA,bins=[90,180],range=[[-80,90],[0,360]]

我得到了我认为我应该得到的,就是这个情节:

Output Image 2

[同样,如果链接无效,请告诉我,我可以与您共享一个 Dropbox 文件夹]

DEC 现在的范围如预期的那样从 -45 到 90,因为我以这种方式创建了 DEC。

但是,将 -90 更改为 -80 没有意义(我认为)。所以可能我做错了什么我现在没注意到,或者我误解了代码中的某些东西或者 matplotlib 中有一个奇怪的错误??

如有任何帮助/提示/更正,我们将不胜感激

爱德华多

最佳答案

如果您不介意依赖外部包,您可以使用 healpy 来实现,它为 Healpix 天空像素化提供了 Mollweide 投影:

https://github.com/healpy/healpy

在此处查看与您的脚本类似的示例:

https://gist.github.com/1215159

关于 healpix 的更多信息:

http://healpix.jpl.nasa.gov/html/intro.htm

输出图像: Example hitmap in Mollview

关于python - 使用 matplotlib 创建全天空投影的好奇(坏?)行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7355497/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com