设置Matplotlib图形的动画



我试图可视化排序算法,我有updateGraph方法来放入新值,但我如何将值放入Graph?方法内部的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) 

最新更新