私は次のようなコードで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でより高い解像度の画像を作成するにはどうすればよいですか?
画面に表示される画像の高さと幅は 図 サイズと 軸 サイズによって制御されます。
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
# 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()
Figure内のAxesのサイズは、いくつかの方法で制御できます。上記の subplot を使用しました。 axes または gridspec を使用して、軸を直接追加することもできます。
おそらくpcolormesh
ではなくimshow
を探しています。前者の目的は、画像を表示するのではなく、ピクセルごとに空間にデータをプロットすることです。