动画Matplotlib图

问题描述

我正在尝试可视化排序算法,并且可以使用updateGraph方法放入新值,但是如何将这些值放入Graph中?该方法内部的plt.show()无法正常工作。我读了一些有关动画方法内容,但我并不太了解,因此非常感谢帮助

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

https://pastebin.com/bHX29sYJ

解决方法

一个选择是清除轴并为每次迭代绘制一个新的条形图。 请注意,我还添加了public function productsArray($api,$args) { $test = array("3300-0021-PC","PRIMA802","3633-6021/4","3652-5023/3","3652-5021/3"); $test = json_encode($test); $db = $GLOBALS['db']->getConnection(); $result = []; $rowData = []; $query .= "SELECT p.id,p.name FROM p_product p WHERE JSON_SEARCH(".$test.",'one',p.name) IS NOT NULL AND p.deleted = ?"; $stmt = $db->executeQuery($query,array(0)); if ($stmt->rowCount() > 0) { foreach($stmt->fetchAll() as $row) { foreach ($row as $key => $val) { $rowData[$key] = $val; } $result['records'][] = $rowData; } $result['Total'] = $stmt->rowCount(); return $result; } return false; } ,因此请显示动画。

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)