Как создать изображения из массива и раскрасить как в matplotlib

Создаю изображения из массива данных, выполнив перед этим всякие математические операции.

До этого отрисовывал в matplotlib:

np.save(workfolder1 + '\\merge', Mpic)
#pathcsv = workfolder1 + '\\Allmerge.txt'
#np.savetxt(pathcsv, Mpic, delimiter=',', fmt='%4.1f')
plt.rcParams["figure.figsize"] = (24, 20)
value = -1
Mpic = np.ma.masked_where(Mpic == value, Mpic)
fig, ax = plt.subplots()
ax.tick_params(length=0, width=0, labelsize=0, labelcolor='w')  # Размер подписи  #  Цвет подписи
title = 'Температура поверхности моря  ' + YMD
plt.title(label=title, loc='center', fontsize=26, fontweight='bold', pad=10)

cmap = copy.copy(mpl.cm.jet)
cmap.set_bad(color='white')
cmap.set_over('gray')
cmap.set_under('#cdffff')
plt.imshow(Mpic, cmap=cmap, aspect='equal', vmin=-2.5, vmax=35, interpolation='none')

myticks = [-2.5, 0., 2.5, 5, 7.5, 10, 12.5, 15, 17.5, 20, 22.5, 25, 27.5, 32, 35]

plt.colorbar(ticks=myticks)
pathtoSphere = workfolder1 + '\\' + 'merge.png'
fig.savefig(pathtoSphere, dpi=200)
plt.close()
print('Картинка merge готова')

Теперь хочу сделать нормальное изображение, пробовал пилом: Создал пустое RGB изображение с размерами массива.

Как раскрасить такими же цветами как и красит MPL?

Картинка в MPL:

введите сюда описание изображения

Исходные данные которые пытаюсь отрисовать


Ответы (1 шт):

Автор решения: strawdog

Вообще существует встроенный метод matplotlib - imsave:

import numpy as np
from PIL import Image
import matplotlib.pyplot as plt

Mpic = np.load("merge.npy")
value = -1
Mpic = np.ma.masked_where(Mpic == value, Mpic)
cmap = plt.get_cmap("jet")
cmap.set_bad(color='white')
cmap.set_over('gray')
cmap.set_under('#cdffff')

plt.imsave("3333.png", Mpic, cmap=cmap, vmin=-2.5, vmax=35)

сохраняем в файл 3333.png

А вот и сам файл, размеры оригинала сохранены (2784х2784), здесь для отображения я уменьшил размер:

введите сюда описание изображения

→ Ссылка