如何在不丢失信息的情况下制作 python 中的密度图?
How to make a density plot in python without loss information?
我想知道如何在 python 中绘制密度图。我正在使用以下代码 plt.hist2d(x[:,1],x[:,2],weights=log(y),bins=100)
其中 x
值是一个数组,y
是相应像素中有多少能量(我正在处理星系的图像,但不适合图像)。但是这个代码有一个问题,如果我选择 bins
的一个小值,例如 240,我可以清楚地看到星系的结构,无论多么扭曲。如果我选择 bin 的值为 3000,则图像会丢失大量信息,y
的许多值不会被绘制出来。我将在下面展示两个例子。
我尝试使用 plt.imshow
但不起作用,出现问题 TypeError: Invalid dimensions for image data
。我正在处理的数据来自 hdf5 文件。
我希望有可能以高分辨率绘制图像,以便更好地看到星系的结构。可能吗?
图片如下:
对于您描述的系统,您应该根据像素的大小设置 bin 大小。这样你就会有最大的分辨率。
不过,我怀疑您最多可以表示 256 个级别。
如果您想要更高的分辨率,您可能需要自己计算图像。根据 this article,您可以保存最高 32 位灰度精度的图像。那可能会夸大其词。不过 16 位还是不错的。这个计算并不难,而且 PIL(Python 成像库)有工具来完成格式化工作。
当然,很大程度上取决于您可用数据的分辨率!
我想知道如何在 python 中绘制密度图。我正在使用以下代码 plt.hist2d(x[:,1],x[:,2],weights=log(y),bins=100)
其中 x
值是一个数组,y
是相应像素中有多少能量(我正在处理星系的图像,但不适合图像)。但是这个代码有一个问题,如果我选择 bins
的一个小值,例如 240,我可以清楚地看到星系的结构,无论多么扭曲。如果我选择 bin 的值为 3000,则图像会丢失大量信息,y
的许多值不会被绘制出来。我将在下面展示两个例子。
我尝试使用 plt.imshow
但不起作用,出现问题 TypeError: Invalid dimensions for image data
。我正在处理的数据来自 hdf5 文件。
我希望有可能以高分辨率绘制图像,以便更好地看到星系的结构。可能吗?
图片如下:
对于您描述的系统,您应该根据像素的大小设置 bin 大小。这样你就会有最大的分辨率。
不过,我怀疑您最多可以表示 256 个级别。
如果您想要更高的分辨率,您可能需要自己计算图像。根据 this article,您可以保存最高 32 位灰度精度的图像。那可能会夸大其词。不过 16 位还是不错的。这个计算并不难,而且 PIL(Python 成像库)有工具来完成格式化工作。
当然,很大程度上取决于您可用数据的分辨率!