TkAgg некорректно отображает данные, в то время как gif - им сохраненный - корректно! Как так?
Вот текст программы:
import matplotlib.pyplot as plt
import matplotlib.animation as animation
# Получить искомое значение и новое количество
search = ['Anna', 'Alice', 'Margo']
weekly_score_all = [[0, 0, 0], [0, 5, 2], [0, 9, 5], [0, 13, 7], [4, 19, 10], [4, 22, 10], [8, 25, 12], [8, 37, 13]]
# Цвета
chart_0 = '#eeee11'
chart_1 = '#dddd22'
chart_2 = '#2bbd16'
facecolor_f = '#aaa'
facecolor_ax = '#222'
# График
fig, ax = plt.subplots(figsize=(7.3, 7.0), layout='tight', num=f'Победитель!!!')
# Размещение окна Windows
fig.canvas.manager.window.wm_geometry('+0+0')
# Название диаграммы
fig.suptitle('Победитель!!!', color=chart_2, size=30)
# Диаграмма
bar_container = plt.bar(search, weekly_score_all[0], 0.8, color=chart_0, edgecolor=chart_1, linewidth=10)
# Цвет окна
fig.set(facecolor=facecolor_ax)
# Цвет окна в окне
ax.set(facecolor=facecolor_ax)
# Скрываем оси и метки по Х
ax.spines.right.set_visible(False)
ax.spines.top.set_visible(False)
ax.spines.left.set_visible(False)
ax.spines.bottom.set_visible(False)
ax.set_xticks([])
ax.set_yticks([])
# Устанавливаем предел
ax.set_ylim([0, max(weekly_score_all[7]) * 1.1])
# Очки
ax.tick_params(axis='y', labelcolor=chart_2, labelsize=14)
# Список для хранения текстовых меток
player_labels = []
# Инициализация текстовых меток для каждого столбца
for (bar, h, player_name) in (zip(bar_container, weekly_score_all[0], search)):
player_label = ax.text(bar.get_x() + bar.get_width() / 2, 0, f'{player_name}\n{h}', ha='center', va='bottom', color='#2bbd16', fontsize=16)
player_labels.append(player_label) # добавляем текстовую метку в список
def animate(q):
for bar_anim, h_anim, player_name_anim, label in (zip(bar_container, weekly_score_all[q], search, player_labels)):
bar_anim.set_height(h_anim - 1)
# Обновляем положение текстовой метки
label.set_y(h_anim)
# Обновляем текст метки
label.set_text(f'{h_anim}\n{player_name_anim}')
return bar_container
# Анимация
ani = animation.FuncAnimation(fig, animate, frames=len(weekly_score_all), blit=True, interval=1500, repeat=False)
# Сохранение анимации
ani.save(filename="example.gif", writer="pillow")
plt.show()
Проблема в том, что TkAgg отображает данные не так, как хотелось бы. Текстовые данные не движутся вместе со столбцом. В то же время gif им сохраненный показывает, что все нормально! Все происходит так, как мне хотелось. Как так?
Помогите решить проблему!