Не удается исчезнуть текст в ManimPython

Программы на Python
Ответить
Anonymous
 Не удается исчезнуть текст в Manim

Сообщение Anonymous »

Метод FadeOut не работает с объектом effectifs_text, я безуспешно пытался повозиться с масштабом.
Есть идеи?
Спасибо
from manim import *
import numpy as np

class NormalDistributionNumbers(Scene):
def construct(self):
# Étape 1: Générer une liste de 100 nombres suivant une loi normale N(175, 20), arrondis à l'unité
random_numbers = np.random.normal(175, 15, 100).round().astype(int)

# Étape 2: Afficher ces nombres
numbers_text = VGroup(*[Text(f"{num}") for num in random_numbers])
numbers_text.arrange_in_grid(rows=10, cols=10, buff=0.5)
self.play(Write(numbers_text.scale(0.5)))
self.wait(2)

# Étape 3: Trier les nombres dans l'ordre croissant
sorted_numbers = sorted(random_numbers)
sorted_numbers_text = VGroup(
*[Text(f"{num}") for num in sorted_numbers])
sorted_numbers_text.arrange_in_grid(rows=10, cols=10, buff=0.5)
self.play(Transform(numbers_text.scale(0.5),
sorted_numbers_text.scale(0.5)))
self.wait(2)

# Étape 4: Colorier les nombres inférieurs à 175 en rouge et ceux supérieurs ou égaux à 175 en bleu

# Étape 5: Partitionner la série en 8 classes de même amplitude entière et labelliser les valeurs avec 8 couleurs
min_val = min(sorted_numbers)
max_val = max(sorted_numbers)
amplitude = max_val - min_val
# Assure que class_width est un entier
class_width = (amplitude + 7) // 8

colors = [PURE_RED, ORANGE, YELLOW,
PURE_GREEN, PURE_BLUE, PURPLE, PINK, TEAL]

for num_text, num in zip(numbers_text, sorted_numbers):
# Assure que class_index est dans les limites
class_index = min((num - min_val) // class_width, 7)
num_text.set_color(colors[class_index])

self.wait(2)

# Étape 6: Fusionner les nombres de chaque classe et les remplacer par leur effectif
class_counts = [0] * 8
for num in sorted_numbers:
# Assure que class_index est dans les limites
class_index = min((num - min_val) // class_width, 7)
class_counts[class_index] += 1

effectifs_text = VGroup(
*[Text(f"{count}").set_color(colors) for i, count in enumerate(class_counts)])
effectifs_text.arrange(RIGHT, buff=1)
self.play(Transform(numbers_text.scale(
0.5), effectifs_text.scale(0.5)))
self.wait(2)
self.play(FadeOut(effectifs_text.scale(0.0005)))
print(type(effectifs_text))

# Étape 7: Construire un tableau d'effectifs pour chacune des classes de même amplitude
table_data = [["Taille (cm)", "Effectif"]]
for i, count in enumerate(class_counts):
class_label = f"[{min_val + i *
class_width}, {min_val + (i + 1) * class_width} ["
table_data.append([class_label, str(count)])

table = Table(
table_data,
include_outer_lines=True
)

# Colorier les cellules du tableau
for i, row in enumerate(table_data[1:], start=1):
table.add_to_back(table.get_cell(
(i, 0), color=colors[(i-1) % len(colors)]))
table.add_to_back(table.get_cell(
(i, 1), color=colors[(i-1) % len(colors)]))

self.play(FadeIn(table.scale(0.5)))
self.wait(2)
self.play(table.animate.shift(3*LEFT))

# Pour exécuter la scène
if __name__ == "__main__":
from manim import config
config.media_width = "75%"
scene = NormalDistributionNumbers()
scene.render()


Подробнее здесь: https://stackoverflow.com/questions/792 ... t-in-manim
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»