2024-09-28 03:21:42 发布
网友
我试图可视化一个排序算法,我有updateGraph方法来输入新的值,但是如何将这些值输入到图中呢?方法中的plt.show()无效。我读了一些关于动画方法之类的东西,但我真的不懂,所以我非常感谢你的帮助
def updateGraph(list): plt.bar(range(0, int(size)), list) plt.show()
https://pastebin.com/bHX29sYJ
一个选项是清除轴并为每次迭代绘制新的条形图。 请注意,我还添加了plt.pause()以便显示动画
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)
一个选项是清除轴并为每次迭代绘制新的条形图。 请注意,我还添加了
plt.pause()
以便显示动画不清除绘图,而是更新条形图可能会更快:
相关问题 更多 >
编程相关推荐