Wie ändere ich die Farbe eines einzelnen Balkens in einer MatPlot FuncAnimation?Python

Python-Programme
Guest
 Wie ändere ich die Farbe eines einzelnen Balkens in einer MatPlot FuncAnimation?

Post by Guest »

Im Wesentlichen versuche ich, dies zu erreichen. Aber ich habe Schwierigkeiten zu verstehen, wie ich das auf Balken anwenden könnte.
Ich versuche, Sortieralgorithmen mithilfe von Matplot zu visualisieren (wobei ich anhand von Benutzereingaben festlege, welcher Algorithmus verwendet werden soll und wie groß er ist). eine zu verwendende Liste) und möchten die Farbe des aktuellen Balkens (in jedem Frame der Animation) auf eine andere Farbe als die anderen festlegen, um anzuzeigen, welches Element in der Liste der Algorithmus gerade sortiert.Ich habe versucht, darauf zuzugreifen BarContainer in der Funktion animate() erstellen und unter anderem die Farben als separaten Generator für jeden Frame erstellen und auf diese Weise die Liste der Farben zuweisen. Ich habe Schwierigkeiten zu verstehen, wie ich das erreichen kann, ohne alle meine Module neu zu schreiben und die Plotgenerationen mit den Algorithmen selbst in einen Topf zu werfen.
Unten ist mein plot.py Modul:

Code: Select all

import matplotlib.pyplot as plt
import matplotlib.animation as animation
import sortalgorithms as sort
import random

fig, axis = plt.subplots()
bar_plots = axis.bar(0, 0)
text = axis.text(0, 0, 0)
iteration_counter = []

def animate(size, rectangle, iteration):
for rect, val in zip(rectangle, size):
rect.set_height(val)

iteration[0] += 1
text.set_text("Iterations : {}".format(iteration[0]))

def plot_algorithm(selected_algorithm, sample_size=None, given_data=None):
global fig, axis
global bar_plots
global text
global iteration_counter

fig, axis = plt.subplots()
data_set = []
generator = ()

if given_data is None:
[data_set.append(x) for x in range(1, int(sample_size))]
random.shuffle(data_set)
elif sample_size is None:
data_set = given_data

if selected_algorithm == 1:
generator = sort.bubble_sort(data_set)
elif selected_algorithm == 2:
generator = sort.visual_merge_sort(data_set)
elif selected_algorithm == 3:
generator = sort.insertion_sort(data_set)

bar_plots = axis.bar(range(len(data_set)), data_set, align="edge")

if len(data_set)  data_set[i + 1]:
data_set[i], data_set[i + 1] = data_set[i + 1], data_set[i]
swapped = True
yield data_set
if not swapped:
break
yield data_set

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post