Как я могу получить мой сохраненный mp4, чтобы точно соответствовать выводу plot.show ()? - PullRequest
1 голос
/ 10 мая 2019

Когда я пытаюсь сохранить результаты анимации в mp4 с помощью ffmpeg , я получаю беспорядок.

plt.show () показывает именно то, что я хочу показать в анимации. Однако когда я сохраняю его, используя ffmpeg , результат сильно отличается от того, что возвращает plt.show () . Я пробовал различные аргументы для fps и т. Д., Но ничего не помогло.

%matplotlib
import pandas as pd
import matplotlib as mpl ## uncomment this if you are running this on a Mac
#mpl.use('TkAgg')         ## and want to use blit=True
import matplotlib.pyplot as plt 
import matplotlib.animation as animation 
import numpy as np 
import csv

people = ('','Jim', 'Dan')
plt.rcdefaults()
fig, ax = plt.subplots()
y_pos = np.arange(len(people))

ax.set_xlim(0,10)
ax.set_yticks(y_pos)
ax.set_yticklabels(people)
ax.invert_yaxis() 
ax.set_xlabel('Skill')
titleList=['Basketball','Hockey','Baseball']
df=[[0,5,7],[0,4,9],[0,2,6]]
def animate(i):
   # Example data
    while i<3:
        ax.set_yticks(y_pos)
        ax.set_yticklabels(people)
        ax.set_xlabel(titleList[i])
        performance=df[i]

        title = ax.text(0.5,0.95,str(titleList[i]), bbox={'facecolor':'w', 'alpha':0.5, 'pad':5},transform=ax.transAxes, ha="center")

        rects = ax.barh(y_pos, performance, align='center',
                color='blue', ecolor='None')
        return [rect for rect in rects] + [title]


ani = animation.FuncAnimation(fig,animate, frames=3, blit=True
                            ,interval=2000,repeat=False)

plt.rcParams['animation.ffmpeg_path'] = 'C:\\ffmpeg\\bin\\ffmpeg.exe'
Writer = animation.writers['ffmpeg']
ani.save('test.mp4')
plt.show() 

В результате получается очень быстрое видео, в которое записываются все данные (аналогично plt.show () , когда blit = False ).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...