Я пытаюсь визуализировать алгоритмы сортировки с помощью matplot (принимая пользовательские данные, чтобы определить, какой алгоритм использовать и насколько большой размер список, который нужно использовать) и хотите установить цвет текущей полосы (в каждом кадре анимации), отличный от цвета остальных, чтобы показать, какой элемент в списке сортирует алгоритм в данный момент.Я пытался получить доступ к BarContainer в функции animate() и, среди прочего, создавая цвета в качестве отдельного генератора для каждого кадра и таким образом назначая список цветов. Я изо всех сил пытаюсь понять, как я могу добиться этого, не переписывая все мои модули и не смешивая генерации графиков с самими алгоритмами.
Ниже приведен мой файлplot.py модуль:
Код: Выделить всё
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)
Подробнее здесь: [url]https://stackoverflow.com/questions/79330106/how-to-change-the-color-of-an-individual-bar-in-a-matplot-funcanimation[/url]