设置Matplotlib图形的动画

2024-09-28 03:21:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图可视化一个排序算法,我有updateGraph方法来输入新的值,但是如何将这些值输入到图中呢?方法中的plt.show()无效。我读了一些关于动画方法之类的东西,但我真的不懂,所以我非常感谢你的帮助

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

https://pastebin.com/bHX29sYJ


Tags: 方法https算法size排序可视化defshow
1条回答
网友
1楼 · 发布于 2024-09-28 03:21:42

一个选项是清除轴并为每次迭代绘制新的条形图。 请注意,我还添加了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) 

相关问题 更多 >

    热门问题