2012-01-26 6 views
55

私はmatplotlibを使ってプロットを保存しようとしています。ただし、画像は空白になります。ここでMatplotlib(pyplot)savefigは空白の画像を出力します

は私のコードです:

plt.subplot(121) 
plt.imshow(dataStack, cmap=mpl.cm.bone) 

plt.subplot(122) 
y = copy.deepcopy(tumorStack) 
y = np.ma.masked_where(y == 0, y) 

plt.imshow(dataStack, cmap=mpl.cm.bone) 
plt.imshow(y, cmap=mpl.cm.jet_r, interpolation='nearest') 

if T0 is not None: 
    plt.subplot(123) 
    plt.imshow(T0, cmap=mpl.cm.bone) 

    #plt.subplot(124) 
    #Autozoom 

#else: 
    #plt.subplot(124) 
    #Autozoom 

plt.show() 
plt.draw() 
plt.savefig('tessstttyyy.png', dpi=100) 

そしてtessstttyyy.pngは空白である(また.JPGてみました)

答えて

107

ときT0 is not None何が起こるかまず、?私はそれをテストするでしょう、私はplt.subplot()に渡す値を調整します。おそらく値131,132,133、またはT0が存在するかどうかに依存する値を試してみてください。

第2に、plt.show()が呼び出された後、新しい図が作成されます。これに対処するには、あなたは、あなたがこのFigureオブジェクトにsavefig()を呼び出すことができ、「現在のフィギュアを得る」ためのplt.gcf()を呼び出すことによってplt.show()

  • はあなたshow()の前に姿を保存

    1. コールplt.savefig('tessstttyyy.png', dpi=100)を呼び出すことができます前に、いつでも。例えば

    :それはどの何もプロットされてきたし、新しい姿を保存しているので、

    fig1 = plt.gcf() 
    plt.show() 
    plt.draw() 
    fig1.savefig('tessstttyyy.png', dpi=100) 
    

    あなたのコードでは、「tesssttyyy.pngは」空白になっています。

  • +0

    plt.savefig()がT0の一部を除去するために忘れた後 – tylerthemiler

    +1

    ええ、私はショーを完全に削除しましたが、それは意味があります.... – tylerthemiler

    +1

    これは素晴らしい、魅力のように動作します – denvar

    11

    plt.show()

    は、それが以前にコメントしていた...来る必要があります。
    関連する問題