我相信解决这个问题会相对简单,但我似乎无法弄清楚如何对我在 python 中绘制的散点图进行卷积。
我有 2 个数据数组,一个是银河纬度,一个是银河经度,我用锤子投影绘制了它们,以表示银河坐标中恒星的分布。
现在,我想使用 boxcar 平滑来平滑 15 度框的图。我曾尝试将 astropy.convolution 与 convolve 和 Box2DKernel 一起使用,但我似乎无法使其工作。我还查看了来自http://docs.astropy.org/en/stable/convolution/kernels.html的示例, 但我不明白如何将他们的示例转换为我需要做的事情。他们似乎正在绘制一个二维函数并对其进行平滑处理。我可以不卷积一个图并根据它们在图表上的位置将这些点分类吗?我唯一能显示任何东西的东西都会产生一条直线,我不明白为什么。我对python很陌生,所以这给我带来了很多麻烦。
这是我到目前为止的代码:
这将两个数组绘制成一个锤子投影:
from astropy import units as u
import astropy.coordinates as coord
glat = coord.Angle(pos_data['GLAT']*u.degree)
glon = coord.Angle(pos_data['GLON']*u.degree)
glon= glon.wrap_at(180*u.degree)
import matplotlib.pyplot as plt
fig = plt.figure(figsize=(10,12))
ax = fig.add_subplot(211, projection="hammer")
ax.scatter(glon.radian, glat.radian)
ax.grid(True)
这是我对数据进行卷积的尝试:
from astropy.convolution import convolve, Box2DKernel
data = [glon, glat]
kernel = Box2DKernel(10)
smoothed = convolve(data, kernel)
ax = fig.add_subplot(212, projection="hammer")
ax.scatter(smoothed[0]*u.radian, smoothed[1]*u.radian)
ax.grid(True)
就像我说的那样,这只是最终给出一些东西而不是错误的众多尝试之一,但我不确定我是否完全正确地使用了该功能。我不确定(或者我不认为)我可以像我那样创建“数据”,但是任何其他数组组合或将每个数组卷积为一维数组也不起作用。
任何想法都会非常有帮助,谢谢。