Кажется, это должно быть проблема с разрешениями на моей машине. После обновления системы в Windows 10 при запуске:

import matplotlib.pyplot as plt
#make figure
plt.plot([1,2,3,4])
plt.ylabel('some numbers')

#save
plt.savefig("./figs/my_plot.jpg")

Он создаст фигуру при первом запуске кода. Если я внесу изменения в код (например, измените метку), а затем перезапущусь, график, показанный в блокноте Jupyter, обновится, но файл, сохраненный на моем компьютере, не будет! Это новая проблема на сегодняшний день, после того как обновление системы было выпущено, так что это кажется вероятным виновником. Любое понимание для меня, чтобы исправить эту проблему, кроме создания нового имени файла каждый раз, когда вносятся изменения?

24
EHB 1 Мар 2018 в 01:20

3 ответа

Лучший ответ

Это может быть просто и глупо, но я просто сделаю следующее:

import os
import matplotlib.pyplot as plt
#make figure
plt.plot([1,2,3,4])
plt.ylabel('some numbers')

#save
strFile = "./figs/my_plot.jpg"
if os.path.isfile(strFile):
   os.remove(strFile)   # Opt.: os.system("rm "+strFile)
plt.savefig(strFile)

Может быть довольно сложно использовать непосредственно «rm» в качестве системной командной строки, но вы можете использовать любую другую опцию, аналогичную этой.

Но, честно говоря, странно, что matplotlib не перезаписывает файл.

< Сильный > ИЗМЕНИТЬ

Я вижу, что вы используете Windows, поэтому вы можете использовать «del» в качестве командной строки удаления вместо «rm» для unix.

6
iblasi 25 Июн 2018 в 14:20

Ответ Джона от 02.10.2015 помог мне.

bbade 5 Июл 2018 в 17:50

Просто добавьте "plt.close ()"

plt.savefig("./figs/my_plot.jpg")
plt.close()
2
Maestre Sanmiguel Colombia 18 Ноя 2019 в 22:07