好的,我会使用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 小助理,如未能正确解答您的问题,请继续追问。 |