web-dev-qa-db-ja.com

ipythonのimshowの解像度を変更する

私は次のようなコードでipythonを使用しています:

image = zeros(MAX_X, MAX_Y)

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

imshow(image)

ただし、結果の画像は常に同じ解像度(250x250)になります。画像のサイズは(MAX_X x MAX_Y)になると思いましたが、そうではないようです。 ipythonでより高い解像度の画像を作成するにはどうすればよいですか?

15
Max Beikirch

画面に表示される画像の高さと幅は サイズと サイズによって制御されます。

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

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

大きい配列のデータは小さい配列と同じサイズで表示されますが、個々の要素の数は多いので、その意味でそれらの解像度は高くなります。保存された図のドット/インチの解像度は、dpi引数 savefig で制御できます。

わかりやすくする例を次に示します。

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

Figure内のAxesのサイズは、いくつかの方法で制御できます。上記の subplot を使用しました。 axes または gridspec を使用して、軸を直接追加することもできます。

22
Molly

おそらくpcolormeshではなくimshowを探しています。前者の目的は、画像を表示するのではなく、ピクセルごとに空間にデータをプロットすることです。

1
Bzazz