Одновременно отображать два изображения png, используя pylab
Я хочу открыть два файла изображений png и отобразить их рядом друг с другом для визуального сравнения.
У меня есть этот код для открытия одного png файла (который я получил из unutbu на stackoverflow.com):
import numpy as np
import pylab
import matplotlib.cm as cm
import Image
fname='file.png'
image=Image.open(fname).convert("L")
arr=np.asarray(image)
pylab.imshow(arr,cmap=cm.Greys_r)
pylab.title('title')
pylab.show()
Есть ли способ изменить этот код, чтобы открыть и отобразить 2 png файла бок о бок со своими собственными заголовками?
Ответы
Ответ 1
Для меня работает следующее (вы можете комментировать/раскомментировать строки в коде, чтобы изменить компоновку "составного" изображения):
#!/usr/bin/env python
#-*- coding:utf-8 -*-
import numpy as np
import pylab
import matplotlib.cm as cm
import Image
f = pylab.figure()
for n, fname in enumerate(('1.png', '2.png')):
image=Image.open(fname).convert("L")
arr=np.asarray(image)
f.add_subplot(2, 1, n) # this line outputs images on top of each other
# f.add_subplot(1, 2, n) # this line outputs images side-by-side
pylab.imshow(arr,cmap=cm.Greys_r)
pylab.title('Double image')
pylab.show()
EDIT: снимок экрана:
![enter image description here]()
Ответ 2
Вот пример, который включает два подграфа на одном рисунке.
import pylab
coordinates = range(5)
x = [1,4,5,6,2]
y = [4,6,8,9,2]
fig = pylab.figure()
fig_1 = fig.add_subplot(2,1,1)
fig_1.bar(coordinates,x)
fig_2 = fig.add_subplot(2,1,2)
fig_2.bar(coordinates,y)
pylab.show()
Думаю, вам просто нужно совместить это с тем, что у вас уже есть.
Ответ 3
Объединяя ответы выше в некоторый код, который я сейчас использую:
`
import pylab as P
import numpy as N
import Image
fnames = ['1.png', '2.png', '3.png']
fig = P.figure()
for i,fname in enumerate(fnames):
fig.add_subplot(number_images, 1, i+1)
P.imshow(N.asarray(Image.open(fname).convert("L")))
P.show()
`