2014-06-12 13 views
9

Używam ipython, z kodem, który wygląda tak:Zmień rozdzielczość imshow w ipython

image = zeros(MAX_X, MAX_Y) 

# do something complicated to get the pixel values... 
# pixel values are now in [0, 1]. 

imshow(image) 

Jednak powstały obraz zawsze ma taką samą rozdzielczość, wokół (250x250). Sądziłem, że wymiary obrazu będą (MAX_X x MAX_Y), ale na pozór tak nie jest. Jak mogę zrobić, aby ipython dał mi obraz o większej rozdzielczości?

Odpowiedz

11

Wysokość i szerokość wyświetlanego obrazu na ekranie jest kontrolowana przez rozmiar figure i rozmiar axes.

figure(figsize = (10,10)) # creates a figure 10 inches by 10 inches 

Osie

axes([0,0,0.7,0.6]) # add an axes with the position and size specified by 
        # [left, bottom, width, height] in normalized units. 

Większe tablice danych będą wyświetlane w tym samym rozmiarze jak mniejszych tablic ale liczba poszczególnych elementów będzie większy, więc w tym sensie, że mają wyższą rozdzielczość. Rozdzielczość w punktach na cal zapisanego rysunku może być kontrolowana za pomocą argumentu dpi na savefig.

Oto przykład, który może uczynić go bardziej zrozumiałym:

import matplotlib.pyplot as plt 
import numpy as np 

fig1 = plt.figure() # create a figure with the default size 

im1 = np.random.rand(5,5) 
ax1 = fig1.add_subplot(2,2,1) 
ax1.imshow(im1, interpolation='none') 
ax1.set_title('5 X 5') 

im2 = np.random.rand(100,100) 
ax2 = fig1.add_subplot(2,2,2) 
ax2.imshow(im2, interpolation='none') 
ax2.set_title('100 X 100') 

fig1.savefig('example.png', dpi = 1000) # change the resolution of the saved image 

images of different sized arrays

# change the figure size 
fig2 = plt.figure(figsize = (5,5)) # create a 5 x 5 figure 
ax3 = fig2.add_subplot(111) 
ax3.imshow(im1, interpolation='none') 
ax3.set_title('larger figure') 

plt.show() 

Larger sized figuer

Wielkość osi w rysunku można sterować na kilka sposobów. Użyłem powyżej powyższego opisu: subplot. Możesz także bezpośrednio dodawać osie z axes lub z gridspec.

+0

W pierwszym przykładzie pokazujesz dwa obrazy obok siebie; jak zmienić rozmiar samego obrazu? Na przykład, aby być bliżej granicy płótna obrazu –

1

Prawdopodobnie szukasz numeru pcolormesh zamiast imshow. Ten pierwszy ma za zadanie wykreślać dane w kosmos, piksel po pikselu, zamiast pokazywać obraz.