Анимационная линейная диаграмма Dynami c - PullRequest
0 голосов
/ 17 апреля 2020

M =

            0.0         0.5         1.0   1.5   2.0
0           300  300.000000  300.000000  1550  1550
1.00e-13 s  300  300.000000  309.150140  1550  1550
2.00e-13 s  300  300.066980  318.166319  1550  1550
3.00e-13 s  300  300.198979  327.050990  1550  1550
4.00e-13 s  300  300.394082  335.806554  1550  1550
5.00e-13 s  300  300.650421  344.435362  1550  1550
6.00e-13 s  300  300.966170  352.939719  1550  1550
7.00e-13 s  300  301.339550  361.321882  1550  1550
8.00e-13 s  300  301.768822  369.584061  1550  1550
9.00e-13 s  300  302.252289  377.728423  1550  1550

Я хочу построить все столбцы для каждой строки, и код ниже делает это. На рисунке ниже приведен пример построения 1 строки

Plotting all columns in a row example

x = M.columns.tolist()
X = np.transpose(x)
i = 1
while i < R:
    v = i*t
    plt.clf()
    y = M.iloc[i,:].tolist()
    fig = plt.figure(1)
    plt.plot(x,y)
    plt.xlabel('x/r')
    plt.ylabel('Temperature [K]')
    plt.text(0.6, 1650, 'Time ='+str('{:.2e}'.format(v)) + ' s',fontsize=15)
    # plt.pause(0.001)
    i = i + 10

plt.show() 

Приведенный выше код динамически меняет график, но я хочу сохранить изменения в видео формат, поэтому я хочу создать анимацию этого. Однако у меня возникли проблемы с преобразованием кода с помощью приведенного ниже кода.

fig = plt.figure(figsize=(10,6))

w = M.columns.tolist()
W = np.transpose(x)

def animate(i):
    while i < R:
        v = i*t
        A = M.iloc[i,:].tolist()
        p.tick_params(labelsize=17)
        p = sns.lineplot(x=W, data=A, color="r")
        plt.setp(p.lines,linewidth=7)

        plt.figure(1)
        plt.plot(x,y)
        plt.xlabel('x/r')
        plt.ylabel('Temperature [K]')
        plt.text(0.6, 1650, 'Time ='+str('{:.2e}'.format(v)) + ' s',fontsize=15)
        # plt.pause(0.001)
        i = i + 10


Writer = Animation.writers['ffmpeg']
writer = Writer(fps=20, metadata=dict(artist='Me'), bitrate=1800)
animation = FuncAnimation(fig, func=animate, frames=np.arange(0, 10, 0.1), interval=10)
ani.save('HeroinOverdosesJumpy.mp4', writer=writer)
plt.show()

Буду признателен за любую помощь.

...