Сохранить matplotlib как mp4 в Python

from matplotlib import pyplot as plt 
import numpy as np 
import matplotlib.animation as animation 
  
fig = plt.figure() 
axis = plt.axes(xlim=(0, 4),  ylim=(-1.5, 1.5)) 
line, = axis.plot([], [], lw=3) 
def animate(frame_number): 
    x = np.linspace(0, 4, 1000) 
    y = np.sin(2 * np.pi * (x - 0.01 * frame_number)) 
    line.set_data(x, y) 
    line.set_color('green') 
    return line, 

anim = animation.FuncAnimation(fig, animate, frames=100,  
                               interval=20, blit=True) 
fig.suptitle('Sine wave plot', fontsize=14) 
anim.save("animation.gif", dpi=300, writer=animation.PillowWriter(fps=25)) # works fine

anim.save("animation.mp4", writer = animation.FFMpegWriter(fps=25))# doesn't work

Я могу без проблем сохранить приведенный выше график в формате .gif.

Но когда я пытаюсь сохранить его как .mp4, я получаю следующую ошибку:

\AppData\Local\Programs\Python\Python312\Lib\site-packages\matplotlib\animation.py:240, in AbstractMovieWriter.saving(self, fig, outfile, dpi, *args, **kwargs)
...
   1553     self._close_pipe_fds(p2cread, p2cwrite,
   1554                          c2pread, c2pwrite,
   1555                          errread, errwrite)

FileNotFoundError: [WinError 2] The system cannot find the file specified
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
0
111
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

как описано на конкретной странице эта функция отправляет кадры в ffmpeg поэтому вам необходимо правильно установить ffmpeg в вашей системе См. другой вопрос для получения дополнительной информации.

Ответ принят как подходящий

Текущая работа заключается в том, чтобы сохранить много изображений и анимировать их с помощью «moviepy».

from matplotlib import pyplot as plt 
import numpy as np 
import glob
import moviepy.video.io.ImageSequenceClip

image_folder = r"C:\Users\user\Desktop\save_images"

for frame_number in range(100):
    x = np.linspace(0, 4, 1000) 
    y = np.sin(2 * np.pi * (x - 0.01 * frame_number)) 
    x = np.linspace(0, 4, 1000) 
    plt.plot(x,y)
    plt.savefig(fr"{image_folder}\{frame_number}.png")
    plt.close()

image_files = glob.glob(fr'{image_folder}/*.png')

fps = 1
clip = moviepy.video.io.ImageSequenceClip.ImageSequenceClip(image_files, fps=fps)
clip.write_videofile(fr'{image_folder}\my_new_video.mp4')

Другие вопросы по теме

Как с помощью Matplotlib создать одну фигуру с декартовыми и полярными координатами
Изменить шрифт цветовой панели matplotlib и отметок меток?
Каков самый простой способ создать диаграмму Ховмёллера или тепловую карту с датами с помощью Matplotlib?
Jupyter Notebook - невозможно обновить график matplotlib в цикле for (сохраняя предыдущие графики) или анимировать график с помощью подфункции анимации
Как создать комбинированную тепловую карту в Python, используя matplotlib с нормализованными данными и исходными значениями t-теста?
Как добавить легенду нанесенной линии на прямоугольную диаграмму?
Название: Как визуализировать иерархические данные с помощью вложенных круговых диаграмм в Python?
Сложность построения спектрограммы данных ЭЭГ в Python
График Seaborn: настройка меток строк и столбцов
Проблемы с графиком Jupyter Lab: plt.scatter() работает нормально, но plt.plot() не строит график