У меня есть данные, которые я хотел бы сохранить в формате png.Мне нужно сохранять точные размеры в пикселях - мне не нужна межпиксельная интерполяция, сглаживание или масштабирование вверх / вниз и т. Д. Однако я хочу использовать цветовую карту (и, возможно, некоторые другие функции matplotlib
'с 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()
Примечание: увеличение интерактивного рисунка дает вам совершенно другой вид, чем попытка увеличить сохраненный рисунок.Я мог бы увеличить разрешение сохраненной фигуры - но у него есть свои проблемы.Мне просто нужно исправить разрешение.