Python: Balkendiagramm beim Sortieren?
Hallo,
ich wollte ein Sortierverfahren programmieren und bei jedem Durchlauf durch das Array soll ein Balkendiagramm erzeugt werden.
Die sortierten Zahlen sollen rot sein und die unsortierten blau.
Bisher habe ich es geschafft, dass die sortierte Liste als Balkendiagramm angezeigt wird. Mein Programm sieht so aus:
def Sortierverfahren_Bubblesort(Liste):
n = len(Liste)
for i in range(n):
for x in range(0, n - i - 1):
if Liste[x] > Liste[x + 1]:
Liste[x], Liste[x + 1] = Liste[x + 1], Liste[x]
Sortierverfahren_Bubblesort(Liste)
print("Sortierte Liste: ", Liste)
#Balkendiagramm
import matplotlib.pyplot as plt
import numpy as np
bar_width = 0.5
index = np.arange(len(Liste))
plt.bar(index, Liste, bar_width, color="blue")
plt.xticks(index, range(len(Liste)))
print("Balkendiagramm: ")
plt.show()
Es wäre cool, wenn mir jemand die Lösung dazu sagen würde.
Ich hab es geschafft, dass nach jedem Durchgang die Balken rot und blau angezeigt werden, jedoch werden die Balken von index 1 aufwärts rot angezeigt.
Wie schaffe ich es dasselbe vom Ende der Liste in Richtung index 0 zu machen statt dass es von index 0 anfängt und in Richtung ende geht?
Mein Programm sieht mittlerweile so aus:
def Sortierverfahren_Bubblesort(Liste):
n = len(Liste)
for i in range(n):
for j in range(0, n-i-1):
if Liste[j] > Liste[j+1] :
Liste[j], Liste[j+1] = Liste[j+1], Liste[j]
Balkendiagramm(Liste, i, len(Liste))
def Balkendiagramm(Liste ,i ,j):
bar_width = 0.5
colors = []
for k in range(len(Liste)):
if i <= k <= j:
colors.append("b")
else:
colors.append("r")
index = np.arange(len(Liste))
plt.bar(index, Liste, bar_width, color=colors)
plt.xticks(index, range(len(Liste)))
print("Balkendiagramm: ")
plt.show()
Sortierverfahren_Bubblesort(Liste)
print("Sortierte Liste: " ,Liste)
#Balkendiagramm
import matplotlib.pyplot as plt
import numpy as np
bar_width = 0.5
index = np.arange(len(Liste))
plt.bar(index, Liste, bar_width, color="red")
plt.xticks(index, range(len(Liste)))
print("Balkendiagramm: ")
plt.show()
1 Antwort
jedoch werden die Balken von index 1 aufwärts rot angezeigt.
Das passiert in Deinem Aufruf
Balkendiagramm(Liste, i, len(Liste))
Willst Du stattdessen rote Balken zwischen 0 und i, ändere diesen Aufruf:
Balkendiagramm(Liste, 0, i)