Я пытаюсь сделать анимацию, но полученные графики отображаются пустыми. Мой код можно найти ниже:
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.lines import Line2D
import matplotlib.animation as animation
class SubplotAnimation(animation.TimedAnimation):
def __init__(self, F_vector, eta_atm, Pkid, Tb_sky):
fig = plt.figure()
ax1 = fig.add_subplot(2, 1, 1)
ax2 = fig.add_subplot(2, 1, 2)
self.F_vector = F_vector
self.eta_atm = eta_atm
self.Pkid = Pkid
self.Tb_sky = Tb_sky
self.t = np.linspace(0, 350, 350)
ax1.set_xlabel('Frequency in GHz')
ax1.set_ylabel('$\eta$')
self.line1a = Line2D([], [], color='black', linewidth=3)
self.line1b = Line2D([], [], color='red', linewidth=3)
self.line1c = Line2D([], [], color='red', linewidth=3)
self.line1d = Line2D([], [], color='yellow', linewidth=3)
ax1.add_line(self.line1a)
ax1.add_line(self.line1b)
ax1.add_line(self.line1c)
ax1.add_line(self.line1d)
ax2.set_xlabel('$P_{kid}$ in W')
ax2.set_ylabel('$T_{sky}$ in K')
self.line2a = Line2D([], [], color='red', linewidth=3)
self.line2b = Line2D([], [], color='green', linewidth=3)
self.line2c = Line2D([], [], color='blue', linewidth=3)
self.line2d = Line2D([], [], color='yellow', linewidth=3)
ax2.add_line(self.line2a)
ax2.add_line(self.line2b)
ax2.add_line(self.line2c)
ax2.add_line(self.line2d)
animation.TimedAnimation.__init__(self, fig, interval=50, blit=True)
def _draw_frame(self, framedata):
i = framedata
self.line1a.set_data(self.F_vector, self.eta_atm[0, :])
self.line1b.set_data(self.F_vector, self.eta_atm[1, :])
self.line1c.set_data(self.F_vector, self.eta_atm[2, :])
self.line1d.set_data(self.F_vector, self.eta_atm[3, :])
self.line2a.set_data(self.Pkid[0, i, :], self.Tb_sky[0, i, :])
self.line2b.set_data(self.Pkid[1, i, :], self.Tb_sky[1, i, :])
self.line2c.set_data(self.Pkid[2, i, :], self.Tb_sky[2, i, :])
self.line2d.set_data(self.Pkid[3, i, :], self.Tb_sky[3, i, :])
self._drawn_artists = [self.line1a, self.line1b,self.line1c,
self.line1d, self.line2a, self.line2b,
self.line2c, self.line2d]
def new_frame_seq(self):
return iter(range(self.t.size))
def _init_draw(self):
lines = [self.line1a, self.line1b, self.line1c,
self.line1d, self.line2a, self.line2b,
self.line2c, self.line2d]
for l in lines:
l.set_data([], [])
SubplotAnimation_1 = SubplotAnimation(F_vector, eta_atm, Pkid, Tb_sky)
plt.show()
Где F_vector, eta_atm, Pkid, Tb_sky - это матрицы, которые извлекаются из файлов .txt. Я вижу 2 графика, как я хочу, с метками правой оси. Однако внутри ничего нет. Я запускаю эту программу локально (не на ноутбуке Jupyter) и, как вы можете видеть, увеличение ширины линии не имеет никакого эффекта. Кто-нибудь знает, почему на графике ничего не отображается?
Буду очень признателен за вашу помощь, заранее спасибо!