plt.savefig('someimgname.jpg')
Это поможет. Но помните, после того, как вы это сделаете - откройте это с помощью Image.Open()
, и это сработает.
im = Image.open('someimgname.jpg')
im.show() # or do whatever you want to do with this image object
Пример кода:
from matplotlib import pyplot as plt
from PIL import Image
list = [[1,2,3,4,5,6,7,8],
[1,2,3,4,5,6,7,8]]
list2 = [[1,2,3,4,5,6,7,8],
[1,2,3,4,5,6,7,8]]
fig = plt.figure()
ax = fig.add_subplot(2, 1, 1)
ax.imshow(list, interpolation=None)
ax2 = fig.add_subplot(2, 1, 2)
ax2.imshow(list, interpolation=None)
plt.savefig('someimgname.jpg')
im = Image.open("someimgname.jpg") # desired image object
im.show()
plt.show()
Ссылки:
- Ссылка на подушку
- Ссылка на Matplotlib
Хорошо для второй части ответа, пока я проверял do c для matplotlib.pyplot.savefig(*args, **kwargs)
сказано.
Первый аргумент fname
- это A path, or a Python file-like object, or possibly some backend-dependent object such as
.
В python объект типа файла - StringIO
объектов.
buf = io.BytesIO()
plt.savefig(buf, format='jpg')
buf.seek(0)
im = Image.open(buf)
Из документации python это стало еще более логичным: -
Потоки в памяти: также можно использовать объект типа str или байтов в качестве файл для чтения и записи. Для строк StringIO может использоваться как файл, открытый в текстовом режиме. BytesIO можно использовать как файл, открытый в двоичном режиме. Оба предоставляют полные возможности чтения-записи с произвольным доступом.
Пример кода: ( В памяти )
from matplotlib import pyplot as plt
from PIL import Image
import io
list = [[1,2,3,4,5,6,7,8],
[1,2,3,4,5,6,7,8]]
list2 = [[1,2,3,4,5,6,7,8],
[1,2,3,4,5,6,7,8]]
fig = plt.figure()
ax = fig.add_subplot(2, 1, 1)
ax.imshow(list, interpolation=None)
ax2 = fig.add_subplot(2, 1, 2)
ax2.imshow(list, interpolation=None)
plt.show()
buf = io.BytesIO()
plt.savefig(buf, format='jpg')
buf.seek(0)
im = Image.open(buf)
im.show()
Ссылка: 3. Python документов