Две цифры открываются, первая пуста - PullRequest
0 голосов
/ 28 марта 2020
screen_width = 45
screen_height = 45

plt.rcParams["figure.figsize"] = (screen_width, screen_height)
plt.style.use('fivethirtyeight')
plt.tight_layout()

fig, (ax1, ax2) = plt.subplots(2,1)
ax1.set_title("Voltage vs samples")
ax1.grid()
ax1.set_ylabel("Voltage (V)")
ax1.set_xlabel("Samples")

ax2.set_title("Current vs samples")
ax2.set_ylabel("Current (A)")
ax2.set_xlabel("Samples")    
ax2.grid()

# animation def
def animate(i):
    plt.cla()
    ax1.plot(x_vals, y_vals, 'ro')
    ax2.plot(x_vals_1, y_vals_1, 'bo')
    plt.tight_layout

ani = FuncAnimation(fig, animate, interval=1000)

Код работает несколько. Он оживляет и обновляет данные так, как я этого хочу. Тем не менее, он создает две фигуры, первая фигура пуста, а вторая обновляется. Почему это так?

1 Ответ

2 голосов
/ 29 марта 2020

Когда plt.tight_layout() вызывается до создания фигуры, она создается на лету. Чтобы избежать создания этой фигуры, вы можете просто позвонить plt.tight_layout() после создания экземпляра Figure, т.е.

# ...
fig, (ax1, ax2) = plt.subplots(2, 1)
plt.tight_layout()
# ...

Также обратите внимание, что строка

def animate(i):
    # ...
    plt.tight_layout

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

def animate(i):
    # ...
    plt.tight_layout()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...