matplotlib:如何将XYZ散射转换为像素图像



我正在寻找将散点图(X vs Y,颜色归一化Z)转换为2D"像素"图像的方法。例如,我如何绘制像素化图像,其中像素根据第三个变量着色?

在我的例子中,我有一个星系列表,每个星系都有天空坐标(X,Y)和距离(Z)。我想制作一个X vs Y的像素化图像,像素的颜色根据Z归一化(例如,该像素中星系的Z值)。

我知道我可以用hexbin做这样的事情,但我想要正方形像素,而不是六边形。(更像imshow产生的东西)。

我还在学习python,所以如果有一个简单/快速的方法来做到这一点(或者清楚的说明如何以复杂的方式做到这一点!)那就太好了。

任何帮助将非常感激!

好的,有两种方法可以做到这一点。一种方法是为距离设置离散数量的箱子(比如d <10pc, 10pc

或者你可以做一个等高线图,这样你在x轴上规定RA,在y轴上规定Dec,并在图中填充距离。RA和Dec都是具有各自坐标的1D数组。然后用距离做一个二维数组。确定距离的中位数/平均值是多少,然后将2D数组除以该值以使其归一化。最后,使用等高线绘制(使用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()

最新更新