Маним set_opacity не работает ожидаемым образом

При запуске следующего кода и создании выходной анимации я ожидаю, что оранжевый график слегка потускнеет до непрозрачности 0,3. К сожалению, это не работает так, как ожидалось. Область под графиком становится цветной, а это не то, чего я хочу. Я прикрепил изображение окончательного результата внизу вопроса. Это баг или я делаю что-то не так?

import numpy as np
from manim import *

class LinearRegression(Scene):
    def construct(self):
        plot = VGroup()
        ax = Axes(
            x_range=[0, np.pi + 0.1, 1],
            y_range=[0, 1.1, 0.2],
            tips=True,
            axis_config = {"include_numbers": True},
            x_length=7,
            y_length=5,
        ).add_coordinates()
        
        plot.add(ax)

        x = np.array([0., 0.16534698, 0.33069396, 0.49604095, 0.66138793,
                       0.82673491, 0.99208189, 1.15742887, 1.32277585, 1.48812284,
                       1.65346982, 1.8188168, 1.98416378, 2.14951076, 2.31485774,
                       2.48020473, 2.64555171, 2.81089869, 2.97624567, 3.14159265])

        y = np.array([0.01313289,  0.9531357,  0.27303831,  0.56426336,  0.69446266,
                         0.79658221,  0.72262249,  1.0565153,  0.90835232,  1.01992807,
                         1.11962864,  0.85117504,  1.01662771,  0.91446878,  0.67722208,
                         0.6222458,  0.511015,  0.39366855,  0.18442382, 0.03879388])

        plr = np.poly1d(np.polyfit(x, y, 50))

        graph = ax.plot(plr, x_range=[0, np.pi, 0.165346982],
                           use_smoothing=False, color=ORANGE)

        self.play(FadeIn(ax))
        self.wait()
        self.play(Create(graph))
        self.wait()
        self.play(graph.animate.set_opacity(0.3))
        self.wait(5)

Я не понимаю, какого результата вы ожидаете.

furas 12.04.2024 14:16

когда я использую FadeOut(graph), он меняет непрозрачность, не показывая фон. Возможно, вам стоит проверить исходный код FadeOut, чтобы увидеть, как он работает.

furas 12.04.2024 14:37

возможно, set_opacity измените непрозрачность для обоих: line и background - и вам нужно найти способ установить непрозрачность только для line

furas 12.04.2024 14:39
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
3
124
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я могу только догадываться, что у graph много объектов — line, background — и когда вы устанавливаете непрозрачность, она меняет ее для всех объектов. И он меняется line с 1.0 на 0.3 и background с 0.0 на 0.3.

Но я вижу, что это работает правильно для FadeOut(graph) (но меняет непрозрачность на 0.0)

Наконец я нашел это:

self.play( graph.animate.fade(0.3) )

КСТАТИ:

Я не уверен, означает ли fade(0.3)opacity(0.3) или opacity(1-0.3).
Иногда fade не дает плавной анимации.


Обновлено:

Я нашел другой метод, который дает мне плавную анимацию:

self.play( graph.animate.set_stroke(ORANGE, opacity=0.3) )

Я тоже попробовал set_stroke_opacity(0.3), но это не меняет непрозрачность (но не вызывает ошибки).

Если вы хотите изменить только фон, используйте

self.play( graph.animate.set_fill(ORANGE, opacity=0.3) )

VMobject - Сообщество Manim v0.18.0.post0

Большое спасибо. set_stroke сработало так, как я ожидал.

Amirreza A. 13.04.2024 12:38

Другие вопросы по теме