|
发表于 2024-3-23 16:34:26
|
显示全部楼层
好的,我会使用manim库来制作动图,下面是实现的代码:
- from manim import *
- import random
- class WaterDistribution(Scene):
- def construct(self):
- # 生成随机的缺水量
- water_shortage = [random.randint(1, 100) for _ in range(10)]
-
- # 绘制初始柱状图
- bars = self.draw_bars(water_shortage)
- self.play(Write(bars))
- self.wait()
-
- # 按缺水量排序
- sorted_water_shortage = sorted(water_shortage, reverse=True)
-
- # 排序后的柱状图
- sorted_bars = self.draw_bars(sorted_water_shortage)
- self.play(Transform(bars, sorted_bars))
- self.wait()
- # 移动线条并标记柱子颜色
- allocation_value = 50 # 可分配水量
- line = Line(start=UP * 5, end=DOWN * 5)
- self.play(ShowCreation(line))
- for i, bar in enumerate(sorted_bars):
- if sorted_water_shortage[i] <= allocation_value:
- bar.set_color(GREEN)
- else:
- bar.set_color(RED)
- self.wait(0.5)
- self.wait()
-
- def draw_bars(self, heights):
- bars = VGroup()
- for i, height in enumerate(heights):
- bar = Rectangle(height=height, width=0.5, fill_opacity=1).next_to(bars, RIGHT, buff=0.2)
- bars.add(bar)
- return bars
复制代码
使用manim执行上述代码,会生成一个动图,依次展示缺水量的随机生成,排序后的柱状图以及线条的移动过程。
请确保已经安装manim库,并且参考manim库的文档来执行代码:https://docs.manim.community/
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 |
|