[PYTHON] Visualisieren Sie das Verhalten des Sortieralgorithmus mit matplotlib

Einführung

Bei der Suche nach Sortieralgorithmen im Internet sehen wir häufig Animationen, die das Verhalten der Algorithmen visualisieren. Ich dachte, es wäre interessant, wenn ich eine solche Animation selbst machen könnte, also habe ich versucht, matplotlib zu verwenden.

Annahme

Quellcode

[Blasensortierung](https://ja.wikipedia.org/wiki/%E3%83%90%E3%83%96%E3%83%AB%E3%82%BD%E3%83%BC%E3% Dies ist der Code, der das Verhalten von 83% 88) an eine GIF-Animation ausgibt.

import matplotlib.pyplot as plt
import matplotlib.animation as ani
from random import shuffle

COLOR_PINK = '#ffc0cb'
COLOR_GOSSIP = '#cbffc0'


def draw_bar(li, color=COLOR_PINK):
  x_axis = list(range(1, len(li) + 1))

  plt.bar(x_axis, li,
          tick_label=li, align='center', width=0.4, color=color)


def draw_frame(frame, sorted_li, steps):
  plt.clf()
  li = steps[frame]
  options = {'color': COLOR_GOSSIP} if li == sorted_li else {}
  draw_bar(steps[frame], **options)


def bubble_sort(li):
  sorted_li = list(li)
  steps = []

  for i in range(0, len(sorted_li)):
    for j in range(1, len(sorted_li) - i):
      if sorted_li[j - 1] > sorted_li[j]:
        sorted_li[j], sorted_li[j - 1] = sorted_li[j - 1], sorted_li[j]

      if len(steps) == 0 or steps[-1] != sorted_li:
        steps.append(list(sorted_li))

  return sorted_li, steps


if __name__ == '__main__':
  li = list(range(1, 11))
  shuffle(li)

  sorted_li, steps = bubble_sort(li)

  fig = plt.figure(figsize=(6.0, 6.0))

  #Lassen Sie das Sortierergebnis in der Animation um 5 Frames länger erscheinen.
  # FuncAnimation()Wiederholen_Es gibt eine Verzögerungsoption, die jedoch nicht funktioniert.
  steps = steps + [steps[-1]] * 5

  anim = ani.FuncAnimation(fig, draw_frame,
                           fargs=(sorted_li, steps), frames=len(steps))
  anim.save('bubble_sort.gif', writer='imagemagick', fps=5)

Animation

bubble_sort.gif

Referenz

Recommended Posts

Visualisieren Sie das Verhalten des Sortieralgorithmus mit matplotlib
Stellen wir uns die Anzahl der mit Matplotlib mit dem Coronavirus infizierten Personen vor
Richten Sie die Größe der Farbleiste an der Matplotlib aus
Erhöhen Sie die Schriftgröße des Diagramms mit matplotlib
Fügen Sie mit Matplotlib Informationen am unteren Rand der Abbildung hinzu
Visualisieren Sie den Bereich der internen und externen Einfügungen mit Python
Visualisieren Sie das charakteristische Vokabular eines Dokuments mit D3.js.
Visualisieren Sie mit OpenCV den Wertschätzungsstatus von Kunstwerken
Passen Sie das Verhältnis mehrerer Zahlen mit der Rasterspezifikation von Matplotlib an
Verhalten von Matplotlib: Histgramm normiert
[Neta] Sortieralgorithmus von O (1)
Ändern Sie den Stil von matplotlib
Visualisieren Sie die Flugbahn von Hayabusa 2
Visualisieren Sie die Ergebnisse von Entscheidungsbäumen, die mit Python scikit-learn erstellt wurden
Formatieren Sie die Zeitachse des Pandas-Zeitreihendiagramms mit matplotlib neu
Ich habe versucht, den FloodFill-Algorithmus mit TRON BATTLE von CodinGame zu implementieren
Visualisieren Sie den Tweet-Fluss mit Diamond + Graphite + Grafana
Ich habe die Grundoperation von matplotlib in Jupyter Lab geschrieben
Implementierung der Dyxtra-Methode durch Python
Über das Verhalten von Yield_per von SqlAlchemy
Über die Größe der Punkte in Matplotlib
Visualisieren Sie den Antwortstatus der Volkszählung 2020
Finden Sie den optimalen Wert der Funktion mit einem genetischen Algorithmus (Teil 2)
Lösen des Labyrinths mit Python-Ergänzung zu Kapitel 6 der Algorithmus-Kurzreferenz-
Visualisieren Sie die Häufigkeit von Wortvorkommen in Sätzen mit Word Cloud. [Python]
[Python] Ich habe versucht, das Preisgeld von "ONE PIECE" über 100 Millionen Zeichen mit matplotlib zu visualisieren.
[Python] Legen Sie den Diagrammbereich mit matplotlib fest
Überprüfen Sie das Verhalten des Zerstörers in Python
Passen Sie den Abstand zwischen den Figuren mit Matplotlib an
Verhalten bei der Rückkehr in den with-Block
Stellen Sie die Behälterbreite mit dem Histogramm von Matplotlib und Seaborn klar und ordentlich ein
Algorithmus Gymnastik 24 Mitte der verknüpften Liste
Visualisieren Sie den Grenzwert des mehrschichtigen Perzeptrons
Probieren Sie den Variational-Quantum-Eigensolver (VQE) -Algorithmus mit Blueqat aus
Durchsuche das Labyrinth mit dem Python A * -Algorithmus
Visualisieren Sie die Auswirkungen von Deep Learning / Regularisierung
Stellen Sie die Farbe der xticklabels individuell mit matplotlib ein
Die dritte Nacht der Runde mit für
Die zweite Nacht der Runde mit für
Richten Sie die Farbleiste mit matplotlib an der Figur aus
Visualisieren Sie die Exportdaten des Piyo-Protokolls
Ich habe versucht, das Verhalten des neuen Koronavirus mit dem SEIR-Modell vorherzusagen.
Zählen Sie die Anzahl der Zeichen mit Echo
Nehmen Sie allgemeine Einstellungen mit der Unterzeichnung von matplotlib vor
Ich habe versucht, die Tweets von JAWS DAYS 2017 mit Python + ELK einfach zu visualisieren
Ich wollte die 3D-Partikelsimulation mit der Python-Visualisierungsbibliothek Matplotlib visualisieren.
Hinweis: Bereiten Sie die Umgebung von CmdStanPy mit Docker vor
Über das Verhalten von copy, deepcopy und numpy.copy
Informationen zur X-Achsen-Notation des Balkendiagramms von Matplotlib
[Python] Grenzachse des 3D-Graphen mit Matplotlib
2016 Todai Mathematik mit Python gelöst
Zeichentipps mit matplotlib auf der Serverseite
[Hinweis] Exportieren Sie das HTML der Site mit Python.
Visualisieren Sie die innere Schicht des neuronalen Netzwerks