在天空上绘制天文测量数据,非常漂亮
skymapper的Python项目详细描述
Skymapper
一组matplotlib指令,用于将天文测量数据从天球映射到2d。
这个软件包的目的是促进交互式工作,以及使用许多天文学家习惯的基于python的工作流创建出版物质量图。主要动机是用平面图形真实地表示弯曲天空中的样本和场,当观察到天空中相当大的一部分时,这一点就变得相关了。
它能做什么?例如,找到给定球面坐标列表的最佳投影,并从几行目录中创建密度图
importskymapperasskm# define the best Albers projection for the footprint# minimizing the variation in distortioncrit=skm.stdDistortionproj=skm.Albers.optimize(ra,dec,crit=crit)# construct map: will hold figure and projection# the outline of the sphere can be styled with kwargs for matplotlib Polygonmap=skm.Map(proj)# add graticules, separated by 15 deg# the lines can be styled with kwargs for matplotlib Line2D# additional arguments for formatting the graticule labelssep=15map.grid(sep=sep)# make density plotnside=32mappable=map.density(ra,dec,nside=nside)cb=map.colorbar(mappable,cb_label="$n_g$ [arcmin$^{-2}$]")# add scatter plotmap.scatter(ra_scatter,dec_scatter,s=size_scatter,edgecolor='k',facecolor='None')# focus on relevant regionmap.focus(ra,dec)
对于探索性工作,您可以缩放和平移,也可以滚动输入/输出(google地图样式)。地图
将自动更新没有规则间距的分划标签的位置。
语法尽可能地模仿matplotlib。当前支持的是标准绘图函数
绘图
分散性
hexbin
用于装箱和插值样本文本
(在["parallel","meridian"]中有一个可选的方向
参数以沿任意一个分划对齐)
以及特殊功能
示意图
显示调查覆盖的区域顶点
绘制简单凸多边形列表healpix
将healpix映射绘制为多边形列表密度
在healpix单元格中创建密度映射外推
从整个天空或子区域的采样生成字段
安装和先决条件
您可以克隆repo并通过 依赖关系: 对于调查足迹,您需要 工作流的基本部分是 有多个地图投影可用,完整列表存储在字典 天文学中对经度有两个约定。例如,用于世界地图或银河地图的标准框架,其纵向坐标范围为[-180..180度,从西向东增加(换言之,在地图上,东方是正确的)。赤道(RA/DEC)坐标系为左手坐标系(即地图上的东面为左手坐标系),坐标范围为[0..360摄氏度T要确定约定, 地图投影可以保留天空区域、角度或距离,但不能全部保留这三个。这意味着定义一个合适的投影必须是一个折衷方案。对于大多数应用来说,尺寸应该完全保持不变,这意味着角度和距离可能不会保持不变。通过调用: 这将优化 要构建自己的投影,请从 如果投影有几个参数,则需要创建一个特殊的 有几个调查是预先定义的,并在 > 如果这看起来像 特别是,我们非常感谢您的帮助,以确保交互式功能在所有matplotlib后端都能正常工作。python setup.py install安装,也可以使用获取最新版本
pip install skymapper
pymangle
背景
投影
,例如hammer
,albers
地图
以保存投影和MatplotLib图形,ax,…投影寄存器
中。如果您想要的投影不包括在内,请打开一个问题,或者更好:自己创建它(见下文)并提交一个拉取请求。
投影
有一个参数lon_type
,对于标准或赤道,分别可以是"lon"
或"ra"
。默认值为lon_type="ra"
crit=skm.projection.stdDistortionproj=skm.Albers.optimize(ra,dec,crit=crit)
反照率
投影参数,以最小化地图失真的方差(即天空中真实圆的明显椭圆度)。可供选择的标准是,例如maxDistoration
或stdscale
(对于面积不等的投影)。创建自定义投影
投影中派生。您将看到每个投影至少需要实现以下方法:
转换
从球面到地图坐标x/y的地图反转
从x/y映射到球形(如果未实现,默认为基本和慢速bfgs反转)@classmethod optimize
,因为默认参数只确定最佳的经度引用。例如,conicprojection.optimize
创建/使用调查
调查注册器
字典中列出。如果你想要的调查不包括在内,不要绝望。要创建类,可以从
survey
派生类,该类只需要实现一个方法:def包含(self、ra、dec)
以确定ra、dec是否在封装外形内。pymangle
接口:它应该是。这意味着您可以避免定义调查的开销,例如将pymangle.mangle
对象直接传递到footprint()
限制
map
和projection
的组合是而不是amatplotlib转换。在许多原因中,使用不是矩形或椭圆的matplotlib.axes
非常困难(可能不可能)。因此,我们决定将问题分成两部分:使用matplotlib对低级图形原语进行处理,并在其上对地图制作进行分层。这样,我们就可以控制球面上的插值方法或刻度标签的位置,以符合数百年来制图的视觉期望。虽然skymapper试图非常严格地遵循matplotlib约定,但有些方法可能无法按预期工作。如果您认为您发现了这样的案例,请打开一个问题。推荐PyPI第三方库