2016-04-28 31 views
1

どのように白い枠線を削除できますか?なぜ軸は-100、-100から始まっていますか?最後に、どのようにして最終的なPNG画像のサイズを設定できますか?白い枠線を削除して最終的な画像サイズを設定するmatplotlib

import matplotlib.pyplot as plt 
import matplotlib 
import numpy as np 

im = plt.imread('pitch.png') 
implot = plt.imshow(im, aspect='auto') 

dpi=96 

if dpi is None: 
     dpi = matplotlib.rcParams['savefig.dpi'] 
dpi = float(dpi) 

fig = plt.figure(figsize=(620/dpi, 579/dpi), dpi=dpi) 
ax = fig.add_axes([0, 0, 1, 1], frame_on=False) 
ax.imshow(im, interpolation='none') 

x, y = np.genfromtxt('coords.csv', delimiter=',', unpack=True) 
plt.plot(x,y, "o") 

plt.savefig('dybala.png', bbox_inches='tight') 

enter image description here

答えて

0

白い境界はimshow and plot in the same plotを使用することによって引き起こされます。 imshowのみを使用する場合、軸の限界は画像の限界に設定されます。ただし、プロットすると自動的に軸が更新されます。

最も簡単な解決策は、imshowの後に軸の限界を取得し、プロット後に図に再適用することです。例えば、最初の限界を取得:次に

implot = plt.imshow(im, aspect='auto') 
xlim, ylim = plt.xlim(), plt.ylim() 

それらを設定:空白を削除する必要があります

plt.plot(x,y, "o") 
plt.xlim(xlim) 
plt.ylim(ylim) 

。保存された最後の図形の大きさを設定するには

は、あなたが最終的な画像のサイズを決定するために(インチあたりのドット数のため)dpiとともに、savefigfigsize=(w,h)(インチサイズ)を渡すことができます。特定のピクセルサイズをお探しの場合は、w dpi、h dpiでこれを計算することができます。

plt.savefig('dybala.png', figsize=(8,6), dpi=200) 

これにより、(8in x 6in)* 200 = 1600 x 1200ピクセルの画像がPNG形式で出力されます。ただし、bbox_inches='tight'を使用して図の周りの空白を削除すると、の後にサイズ変更が発生し、小さな画像が返されます。

数字軸をplt.axis('off')で削除すると、この問題を回避できます。 DPIをソースイメージのサイズに合わせて設定し、それに応じてfigsizeを調整すると、bbox_inches='tight'で保存して元のサイズに一致するイメージを返すことができます。

関連する問題