Matplotlib (pyplot) savefig выводит пустое изображение
Я пытаюсь сохранить графики, которые я делаю с помощью matplotlib; однако изображения сохраняются пустыми.
вот мой код:
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)
3 ответа:
во-первых, что происходит, когда
T0 is not None
? Я бы проверил это, а затем я бы скорректировал значения, которые я передаю вplt.subplot()
; может быть, попробуйте значения 131, 132 и 133, или значения, которые зависят от того или нет .во-вторых, после
plt.show()
создается новая фигура. Чтобы справиться с этим, вы можете
вызов
plt.savefig('tessstttyyy.png', dpi=100)
прежде чем вы позвонитеplt.show()
сохраните рисунок перед вами
show()
по телефонуplt.gcf()
для "сделать текущим рисунок", то вы можете позвонитьsavefig()
на
давайте я приведу более подробный пример:
import numpy as np import matplotlib.pyplot as plt def draw_result(lst_iter, lst_loss, lst_acc, title): plt.plot(lst_iter, lst_loss, '-b', label='loss') plt.plot(lst_iter, lst_acc, '-r', label='accuracy') plt.xlabel("n iteration") plt.legend(loc='upper left') plt.title(title) plt.savefig(title+".png") # should before plt.show method plt.show() def test_draw(): lst_iter = range(100) lst_loss = [0.01 * i + 0.01 * i ** 2 for i in xrange(100)] # lst_loss = np.random.randn(1, 100).reshape((100, )) lst_acc = [0.01 * i - 0.01 * i ** 2 for i in xrange(100)] # lst_acc = np.random.randn(1, 100).reshape((100, )) draw_result(lst_iter, lst_loss, lst_acc, "sgd_method") if __name__ == '__main__': test_draw()