Próbuję zapisać wykresy, które wykonuję za pomocą matplotlib; jednak obrazy są zapisywane puste.
Oto mój kod:
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)
Plik tessstttyyy.png jest pusty (próbowano też z .jpg)
źródło
jupyter
notatnikach z%matplotlib inline
włączoną opcją:savefig
wywołanie musi znajdować się w tej samej komórce, co metoda tworzenia wykresu.plt.show()
generuje nowy obraz. Rzeczywiście, to rozwiązało problem.plt.show()
powinien przyjść późniejplt.savefig()
Objaśnienie:
plt.show()
usuwa całość, więc wszystko, co potem wydarzy się na nowej pustej figurzeźródło
plt.show()
czyści całość, więc wszystko później wydarzy się na nowej pustej figurze.zmiana kolejności funkcji rozwiązała problem :
w następujący sposób:
źródło
Wywołanie savefig przed show () działało dla mnie.
źródło
pozwól mi podać bardziej szczegółowy przykład:
źródło