好的 - 有两种方法可以做到这一点。一种方法是让您为距离设置一个谨慎的箱数(如 d < 10pc、10pc < d < 20pc、d> 20pc)。这相对容易,您需要做的只是几个循环 - 这是一个带有 3 的示例:
raclose = []
ramid = []
rafar = []
decdlose = []
decmid = []
decfar = []
for ii in range(len(dist)):
if dist[ii] < 10.:
raclose.append(ra[ii])
decclose.append(dec[ii])
elif dist[ii] > 20.:
rafar.append(ra[ii])
decfar.append(dec[ii])
else:
ramid.append(ra[ii])
decmid.append(dec[ii])
plt.clf
ax1 = scatter(raclose, decclose, marker='o', s=20, color="darkgreen", alpha=0.6)
ax2 = scatter(ramid, decmid, marker='o', s=20, color="goldenrod", alpha=0.6)
ax3 = scatter(rafar, decfar, marker='o', s=20, color="firebrick", alpha=0.6)
line1 = Line2D(range(10), range(10), marker='o', color="darkgreen")
line2 = Line2D(range(10), range(10), marker='o',color="goldenrod")
line3 = Line2D(range(10), range(10), marker='o',color="firebrick")
plt.legend((line1,line2,line3),('d < 10pc','20pc > d > 10pc', 'd > 20pc'),numpoints=1, loc=3)
show()
或者你可以做一个等高线图,这样你在 x 轴上规定 RA,在 y 轴上规定 Dec,并用距离填充情节。RA 和 Dec 都是具有各自坐标的一维数组。然后你用距离制作一个二维数组。确定距离的中值/平均值是多少,然后将二维数组除以该值以对其进行归一化。最后,使用等高线图(使用 contourf 或 imshow)进行绘图,例如:
import matplotlib.pyplot as plt
from matplotlib import cm
ax = pylab.contourf(RA,Dec,dists, levels=[1, 5, 10, 15], cmap=plt.cm.spectral)
cbar=pylab.colorbar()