2012-01-26 1 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의 존재 여부에 따라 달라지는 값을 시도해보십시오.

둘째, 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()

    는 이전에 주석했다 ... 와야한다.
    관련 문제