1

ソートアルゴリズムの視覚化とテストの有効性を担当するeラーニングアプリケーションを作成したいと思います。PythonとPySide(PyQt)を使用しますが、これを単純に視覚化するために、気の利いたutilsを使用するのは素晴らしいことです。 この視覚化の目的は、ソートアルゴリズムの動作手順を示すことです。

Pythonで簡単な視覚化、アニメーションを作成するための気の利いたユーティリティを知っていますか?たぶん、PySideは視覚化を行うために何かを持っていますか?

4

3 に答える 3

2

matplotlibとそのアニメーション機能を使用できます。

import matplotlib.pyplot as plt
import matplotlib.animation as animation

random_list = [10,3,5,4,9,1,6,7,2,8]

def bubble_sort():
    data = random_list
    for i in range(len(data)-1):
        for j in range(i, len(data)-1):
            a, b = data[j], data[j+1]
            if a > b:
                data[j], data[j+1] = b, a
                yield data

fig = plt.figure()
ax = fig.add_subplot(111)
def update(data):
    ax.clear()
    ax.hlines(range(len(data)), 0, data, 'red')
    ax.set_ylim(-0.5, 9.5)
update(random_list)

ani = animation.FuncAnimation(fig, update, bubble_sort, interval=250)
plt.show()

他のアルゴリズムを実装するように変更bubble_sort()し、各反復でプロットする数値のリストを生成するだけで済みます。

matplotlib はPySide に埋め込むこともできますが、テストはしていません。

于 2012-11-20T23:55:30.020 に答える
1

PySideはQtの単なる薄いラッパーであり、Qtにはアルゴリズムの視覚化に対する組み込みのサポートがありません。これは、従来のWIMP GUI、つまりテキストボックスやスライダーなどのウィジェットでいっぱいのウィンドウを構築するために設計されています。

視覚化された各オブジェクトをウィジェットとして表現し、ウィジェットを手動で移動することでQtをアニメーション化できます。または、空白のキャンバスを作成してアニメーションを上に描画することもできますが、どちらにしても、Qtはそれほど役に立ちません。

PyGameのようなゲーム指向のライブラリの方が適切な場合があります。各オブジェクトをスプライトとして表現し、スプライトアニメーション機能を使用できます。

または、汎用GUIライブラリの代わりに視覚化ライブラリを探すこともできます。

于 2012-11-20T20:35:18.743 に答える
1

Qt では、2 つの異なる方法で UI を作成できます。

  1. ウィジェットベースで、静的 UI (QPushButton、QTextEdit など) を備えた従来のアプリケーションを作成できます。これらの UI コンポーネントでアニメーションを行うのは面倒かもしれません

  2. 宣言型 UI。QML (Qt Meta Language) を使用して動的 UI (多くのアニメーション/トランジションを含む UI) を作成します。QMLの例を見てみましょう

QML を使用すると、UI をすばやく作成し、簡単にアニメーション化できます。PySide で QDeclarativeView を使用して、アプリケーションで QML を読み込んで表示できます。

QObject のシグナルスロットメカニズムまたはプロパティを介して、Python から QML にデータ (数値のリスト) を公開できます。このリポジトリには多くの例があります。

于 2012-12-08T16:54:55.317 に答える