numpy/scipyでは、イメージを配列に格納しています。私はそれを表示することができます、savefig
を使用しないで保存します。境界線、軸、ラベル、タイトルなどはありません。scipy:フレーム、軸、内容なしのセーブコンフィグ
import matplotlib.pyplot as plt
は図を作成するには:
私はPyPNG
または
scipy.misc.imsave
のようなパッケージを避けたい
、彼らはいつも私
numpy/scipyでは、イメージを配列に格納しています。私はそれを表示することができます、savefig
を使用しないで保存します。境界線、軸、ラベル、タイトルなどはありません。scipy:フレーム、軸、内容なしのセーブコンフィグ
import matplotlib.pyplot as plt
は図を作成するには:
私はPyPNG
または
scipy.misc.imsave
のようなパッケージを避けたい
、彼らはいつも私
のための基本的なsavefig()
と仮定すると、うまくインストールしていない(時々問題がありますフレームなし:
fig = plt.figure(frameon=False)
fig.set_size_inches(w,h)
ontent図全体に
ax = plt.Axes(fig, [0., 0., 1., 1.])
ax.set_axis_off()
fig.add_axes(ax)
を記入後、その上に自分のイメージを描く:
ax.imshow(your_image, aspect='normal')
fig.savefig(fname, dpi)
aspect
パラメータは、彼らがfig.set_size_inches(…)
に指定されたフィギュアの大きさを埋めることを確認するためにピクセルサイズを変更します。このようなことで遊ぶ方法を知りたい場合は、matplotlib's documentation、特にAxes、Axis、Artistのテーマを読んでください。
あなたは(get_window_extent
を使用して)軸内の画像のバウンディングボックスを見つけ、画像のその部分のみを保存するためにbbox_inches
パラメータを使用することができます。
import numpy as np
import matplotlib.pyplot as plt
data=np.arange(9).reshape((3,3))
fig=plt.figure()
ax=fig.add_subplot(1,1,1)
plt.axis('off')
plt.imshow(data)
extent = ax.get_window_extent().transformed(fig.dpi_scale_trans.inverted())
plt.savefig('/tmp/test.png', bbox_inches=extent)
私はジョー・キングトンhereからこのトリックを学びました。
ちょうど 'plt.axis( 'off')' helped。他の答えはあまり役に立ちません。 – imsrgadich
簡単に解決策があるように思わ:
fig.savefig('out.png', bbox_inches='tight', pad_inches=0)
これは私のためにうまくいった。また、pad_inchesを希望のサイズに簡単に変更できます。ありがとう! – Curious2learn
+1私のためにもうまくいった:) そして、これは実際に受け入れられた答えより簡単です –
私はまだこれで白い余白を持っています。 –
私は私の場合は、いくつかのオプションを試したし、最善の解決策は、このでした:savefig
fig.subplots_adjust(bottom = 0)
fig.subplots_adjust(top = 1)
fig.subplots_adjust(right = 1)
fig.subplots_adjust(left = 0)
私は、hereから少し借りてheron13の回答を提案し、bboxをtightモードに設定した後のパディングを削除します:
fig.axes.get_xaxis().set_visible(False)
fig.axes.get_yaxis().set_visible(False)
fig.savefig('out.png', bbox_inches='tight', pad_inches=0)
get_xaxis()とget_yaxis()が存在しないと言うエラーが表示されます。それがどうして起こるのか? –
axes()オブジェクトを作成し、ax.xaxisとax.yaxisを使用してください – perigon
私は他の情報なしに、プロットの内容を抽出したいlibrosaを使用して、いくつかの可視化をしながら、私は同じ問題を抱えていました。だから私のアプローチ。うぬぼれの答えは私が働くことにも役立ちます。
figure = plt.figure(figsize=(500, 600), dpi=1)
axis = plt.subplot(1, 1, 1)
plt.axis('off')
plt.tick_params(axis='both', left='off', top='off', right='off', bottom='off', labelleft='off', labeltop='off',
labelright='off', labelbottom='off')
# your code goes here. e.g: I used librosa function to draw a image
result = np.array(clip.feature_list['fft'].get_logamplitude()[0:2])
librosa.display.specshow(result, sr=api.Clip.RATE, x_axis='time', y_axis='mel', cmap='RdBu_r')
extent = axis.get_window_extent().transformed(figure.dpi_scale_trans.inverted())
plt.savefig((clip.filename + str("_.jpg")), format='jpg', bbox_inches=extent, pad_inches=0)
plt.close()
これは正しい軌道に乗りましたが、私は2つの問題がありました:1)フォントを避けるためにdpiを1より大きい数値に設定しなければならなかった私のジュピターノートのエラー。 2)まだ小さな境界があったので、エクステントBboxをextent.get_points()* np.array([[1.1]、[。9]))に手動で変更する必要があります。 –
他の人に役立つかもしれない答えを実行してくれてありがとう。 – GPrathap
いや、私は画像が正方形でない場合は忘れてしまったので、私はまだいくつかの小さな透明の境界線を持っている、と私がしたいことはALL_で_no国境で、純粋なイメージ –
はたぶん、それはです:P。 'aspect'パラメータを追加するように編集しました。今はどうですか? – matehat
grrr、いいえ、まだ同じです。画像の周りには小さくて透明な境界があり、隣にはほとんどピクセルがありません –