#python #matplotlib #savefig
#python #matplotlib #savefig
Вопрос:
Я пытаюсь сохранить файл изображения с помощью Matplotlib, но, похоже, он не работает. Если я запущу, он должен сохранить файл. Но ничего не происходит. Я просто проверяю, работает ли код сохранения изображения. Таким образом, код на самом деле не мой. Он взят из учебного блога по python. пожалуйста, помогите мне.
import numpy as np
import matplotlib.pyplot as plt
def make_plot():
t = np.arange(0.0, 20.0, 1)
s = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
s2 = [4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23]
plt.subplot(2, 1, 1)
plt.plot(t, s)
plt.ylabel('Value')
plt.title('First chart')
plt.grid(True)
plt.subplot(2, 1, 2)
plt.plot(t, s2)
plt.xlabel('Item (s)')
plt.ylabel('Value')
plt.title('Second chart')
plt.grid(True)
plt.savefig('datasets/images/good.png')
Комментарии:
1. есть ли у вас папка «datastes / images» в вашей файловой системе относительно скрипта python? я могу заверить вас, что из 10 тысяч фигур matplotlib, которые я лично создал, это
savefig
работает2.
''datasets/images/good.png'
это относительный путь, поэтому возможно, что вы сохраняете его где-то неожиданно на основе вашего текущего рабочего каталога. Я бы посоветовал вам попробовать импортировать ОС, а затем добавить строкуprint(os.get_cwd())
прямо перед сохранением. В качестве альтернативы вы можете попробовать сохранить его~/test_figure.png
, который будет находиться в корне вашего домашнего каталога.3. Учитывая код, который вы показываете, мне кажется, что вы не вызываете
make_plot()
.4. Да, у меня есть папки.
Ответ №1:
Как я уже говорил ранее в комментарии, проблема в том, что вы не вызываете make_plot()
для исключения. Я просто пробую ваш код и отлично работает, мне пришлось создавать папки datasets / images.
import numpy as np
import matplotlib.pyplot as plt
def make_plot():
t = np.arange(0.0, 20.0, 1)
s = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
s2 = [4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23]
plt.subplot(2, 1, 1)
plt.plot(t, s)
plt.ylabel('Value')
plt.title('First chart')
plt.grid(True)
plt.subplot(2, 1, 2)
plt.plot(t, s2)
plt.xlabel('Item (s)')
plt.ylabel('Value')
plt.title('Second chart')
plt.grid(True)
plt.savefig('datasets/images/good.png')
# Just calling the function
make_plot()