Как сохранить массив сопоставленных цветов с теми же размерами исходного массива? - PullRequest
0 голосов
/ 24 мая 2018

У меня есть данные, которые я хотел бы сохранить в формате png.Мне нужно сохранять точные размеры в пикселях - мне не нужна межпиксельная интерполяция, сглаживание или масштабирование вверх / вниз и т. Д. Однако я хочу использовать цветовую карту (и, возможно, некоторые другие функции matplotlibimshow).На мой взгляд, есть несколько способов сделать это:

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()

Примечание: увеличение интерактивного рисунка дает вам совершенно другой вид, чем попытка увеличить сохраненный рисунок.Я мог бы увеличить разрешение сохраненной фигуры - но у него есть свои проблемы.Мне просто нужно исправить разрешение.

1 Ответ

0 голосов
/ 24 мая 2018

Кажется, вы ищете plt.imsave().

В этом случае

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