2012-04-29 10 views
14

我想打開兩個png圖像文件並將它們並排顯示以進行視覺比較。 我有一個開放的PNG文件的代碼(這是我從unutbu上了車stackoverflow.com):使用pylab同時顯示兩個png圖像

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文件一側的方式冠軍?

回答

22

我下面的作品(你可以發表評論/取消註釋中的代碼行更改「複合」圖像的佈局):

#!/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() 

編輯:截圖:

enter image description here

+0

這是極好的!謝謝! – balibakbar

+0

如果添加兩個以上的圖像,這不會造成「索引超出範圍」錯誤嗎? – Seanny123

+3

對於最新的'matplotlib',你最好使用從1開始的索引。參見[官方文檔](http://matplotlib.org/api/api_changes.html#changes-in-1-4x) – wlnirvana

0

下面是一個包含一個圖中兩個子圖的示例。

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

我想你只需要這與你已經擁有的結合。

0

結合上述問題的答案爲一些代碼,我現在使用:

`

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

`