2016-06-29 10 views
2

私はpngとして保存する必要がある2D配列を持っています。画像にテキストラベルを追加する必要もあります。これまでのところ、私は、のどれが最適ではない、二つのアプローチを試してみました:matplotlib - オーバーレイされたテキストをイメージとして配列を保存するにはどうすればいいですか?

  • 私は画像として直接配列を保存するためにmatplotlib.imageモジュールを使用します。

    matplotlib.image.imsave(FILENAME, ARRAY, cmap=plt.cm.binary) 
    

    私はテキストを追加することができませんがそのコマンドを使用します。生画像を保存した後にPILを使用して編集しても、大きなデータセットのI/Oコストは許容できません。

  • pyplotインターフェイスを使用して、配列をFigureに変換して凡例を追加します。しかし、ファイルとして保存すると、余分な空白があります。 、2次元配列から画像を生成する方法はあり

    import matplotlib.pyplot as plt 
    plt.imshow(ARRAY, cmap=plt.cm.binary) 
    plt.axis('off') 
    plt.savefig(FILENAME, dpi=100, pad_inches=0.0, bbox_inches='tight') 
    

:私はなど、0にパディングを設定し、座標軸をオフに試してみましたが、私は取り除くことはできませんいくつかの空白のマージンが常にありますテキストをオーバーレイし、余白なしでスピーディーに.pngとして保存しますか?好ましくはmatplotlib/PILを使用するソリューションですが、そこに何か良いものがあれば、私はそれを調べることができます。

+0

重複します。http://stackoverflow.com/questions/8218608/scipy-savefig-枠なし軸のみのコンテンツ –

答えて

0

私は最初からオブジェクト指向のアプローチを使用して私の問題を解決することができました:figureクラスの

import matplotlib.pyplot as plt 
fig = plt.figure(dpi=100, tight_layout=True, frameon=False, figsize=(resolution/100.,resolution/100.)) # dpi & figsize of my choosing 
fig.figimage(ARRAY, cmap=plt.cm.binary) 
fig.text(X,Y,TEXT, size='medium', backgroundcolor='white', alpha=0.5) 
plt.savefig(FILENAME) 
plt.close(fig) 

追加のドキュメントがhereを見つけることができます。

注:数値をサイジングするために、私はこの関係が有用であることが判明:
サイズ(インチ)=ピクセル/ DPIの解像度

関連する問題