动画 Matplotlib 图

Animating a Matplotlib Graph

我正在尝试可视化排序算法,并且我有 updateGraph 方法来放入新值,但如何将这些值放入图表中? plt.show() 方法内部不起作用。我读了一些关于动画方法之类的东西,但我真的不明白所以真的很感激帮助

def updateGraph(list): plt.bar(range(0, int(size)), list) plt.show()

https://pastebin.com/bHX29sYJ

一个选项是清除轴并为每次迭代绘制一个新的条形图。 请注意,我还添加了 plt.pause() 以便显示动画。

from matplotlib import pyplot as plt
import random

size = 10

fig, ax = plt.subplots()
plt.title("Bubble Sort Visualization")
plt.xlim((-0.6, size-0.4))
plt.ylim((0, size))

def updateGraph(lst):
    plt.cla()
    plt.bar(range(0, int(size)), lst)
    plt.pause(0.2)  # Choose smaller time to make it faster 
    plt.show()

def bubbleSort(lst):
    n = len(lst)
    elementsInPlace = 0
    comparisonCount = 0

    while n > 1:
        for i in range(len(lst) - elementsInPlace - 1):
            if lst[i] > lst[i + 1]:
                comparisonCount += 1
                lst[i], lst[i + 1] = lst[i + 1], lst[i]
                updateGraph(lst)
            else:
                comparisonCount += 1

        n -= 1
        elementsInPlace += 1
    return lst

randomlist = random.sample(range(1, int(size) + 1), int(size))
bubbleSort(randomlist)

不清除绘图而是更新条形图可能会更快:

h = ax.bar(range(size), randomlist)

def updateGraph(lst):
    for hh, ll in zip(h, lst):
        hh.set_height(ll)
    plt.pause(0.001)