При запуске следующего кода и создании выходной анимации я ожидаю, что оранжевый график слегка потускнеет до непрозрачности 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)
когда я использую FadeOut(graph), он меняет непрозрачность, не показывая фон. Возможно, вам стоит проверить исходный код FadeOut, чтобы увидеть, как он работает.
возможно, set_opacity измените непрозрачность для обоих: line и background - и вам нужно найти способ установить непрозрачность только для line






Я могу только догадываться, что у 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 сработало так, как я ожидал.
Я не понимаю, какого результата вы ожидаете.