Построение живой круговой диаграммы с использованием matplotlib pyplot

1

Код:

import matplotlib.pyplot as plt
from time import sleep
for i in range(100):
    plt.pie([100-i,i])
    sleep(1)
    plt.show()

Изображение 174551

Проблема с моим кодом: - Всякий раз, когда значения plt.pie() изменяются и круговая диаграмма накладывается, выполнение цикла for кажется остановленным, и я должен закрыть окно круговой диаграммы, чтобы вернуться к выполнению цикла for.

Что я хочу сделать: - plt.pie() отображает живые изменения в своих значениях, не останавливаясь на выполнении цикла.

благодарю вас.

Изменение: найдено решение.

import matplotlib.pyplot as plt
from time import sleep
for i in range(100):
   plt.pie([100-i, i])
   plt.pause(.001)
   plt.draw()
   sleep(1)

Функция plt.show() является блокирующей функцией, поэтому вместо нее используется plt.draw() вместе с plt.pause(), и теперь она выполняется как intede.

Если вы столкнулись, добавьте другое решение. Еще раз спасибо.

  • 1
    Пожалуйста, взгляните на анимации matplotlib , которые специально созданы для запуска кода внутри цикла событий и, следовательно, для избежания таких проблем.
Теги:
matplotlib

1 ответ

0

добавьте plt.close() в ваш цикл for-loop

import matplotlib.pyplot as plt
from time import sleep
for i in range(100):
    plt.pie([100-i,i])
    sleep(1)
    plt.show()
    plt.close()
  • 0
    Это не работает. Похоже, plt.show () также блокирует выполнение функции plt.close ().
  • 0
    Что если вы удалите plt.show () и добавите plt.figure () в качестве первой строки цикла for?
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню