首页 > 解决方案 > 如何保存与原始数组相同维度的颜色映射数组?

问题描述

我有要保存为 png 的数据。我需要保持准确的像素尺寸 - 我不想要任何像素间插值、平滑或向上/向下尺寸等。不过,我确实想使用颜色图(可能还有matplotlib's 的一些其他功能imshow)。正如我所看到的,有几种方法可以做到这一点:

1)手动滚动我自己的颜色映射。(我宁愿不这样做)

2)弄清楚如何确保imshow生成的图形中图像的像素尺寸完全正确,然后仅提取图形的图像部分保存。

3) 使用其他方法直接给我一个颜色映射数组(即我的 NxN 灰度数组 -> NxNx3 数组,使用 matplotlibs 颜色图之一)。然后使用另一种 png 保存方法保存它,例如scipy.misc.imsave.

我该怎么做以上之一?(或其他替代品)

当我只是直接使用保存图形时出现了我的问题savefig,并意识到我无法放大细节。放大并不能解决问题,因为像素之间的模糊正是我正在寻找的东西之一——而且像素大小具有物理意义。

编辑: 示例:

import numpy as np
import matplotlib.pyplot as plt
X,Y = np.meshgrid(np.arange(-50.0,50,.1), np.arange(-50.0,50,.1))
Z = np.abs(np.sin(2*np.pi*(X**2+Y**2)**.5))/(1+(X/20)**2+(Y/20)**2)
plt.imshow(Z,cmap='inferno', interpolation='nearest')
plt.savefig('colormapeg.png')
plt.show()

注意放大交互式图形会给您一个非常不同的视图,然后尝试放大保存的图形。我可以提高保存图形的分辨率——但这有它自己的问题。我真的只需要固定分辨率。

标签: matplotlibcolormap

解决方案


看来您正在寻找plt.imsave().

在这种情况下,

plt.imsave("filename.png", Z, cmap='inferno')

推荐阅读