数据可视化——manim安装与尝试

1.1 介绍

一直以来,我做可视化都是用matplotlib + numpy,做出来的东西大都长这样:

每日新增病例拟合函数
新冠疫情美国数据

虽然做专业的数据分析不得不用到他们,但它们大都没有什么欣赏价值,尤其是在我看了3b1b的数学科普视频(强烈推荐)后:

像这种动画是怎么做的呢,肯定不是剪辑软件,而想matplotlib这样的扩展包也不能做动画,难道?他是做了几百张图然后拼到一起?!

不不不不,这个作者自己做了轮子——manim

它由python编写,

依赖于ffmpeg(视频编码)+latex(文字公式生成)+sox(音频处理)+Cairo(图形处理)

使用编程的方式实现视频制作可以说是惊艳到了我,虽然编程的门槛会比较高,但对于已经会python基础的朋友生成视频还是很方便的,可惜并没有官方的文档,所以……

1.2 安装

Mac的话这里需要python3.7及以上 的pip和brew来方便的安装需要的软件

  1. 安装cairo: brew install cairo
  2. 安装Sox: brew install sox
  3. 安装ffmpeg: brew install ffmpeg
  4. 安装LaTeX发行版 (MacTeX): brew cask install mactex
  5. 安装manimlib pip install manimlib (或者 pip install --user manimlib 不和他人同享

如果是Windows的话可以看看这个,介绍的也很详细,还可以用Anaconda方便管理包和文件(仅Windows

2.1 使用

我觉得我并没有能力介绍好manim,但我可以举例子

e.g 1 广告:

from manimlib.imports import *
#引入所有类
class Change(Scene):
    def construct(self):
        text = TextMobject("concentric-circle")
        text.scale(2)#文字类大小为2

        self.play(Write(text))#显示
        self.wait()#等待一秒
        self.play(#play即为动画
            text.to_corner, UL,#移动到左上角
            run_time = 1#1秒完成以上操作
        )
        self.play(text.shift, RIGHT)向右移动一个单位

        www = TextMobject("www.")
        www.next_to(text,LEFT)
        www.shift(UP*0.2)
        com = TextMobject(".com")
        com.next_to(text,RIGHT)
        sn = TextMobject("sn.")
        sn.next_to(www,DOWN)#把www/sn.con….com定义完整

        self.play(
            Write(www),
            Write(com),
            Write(sn)
        )#写出三个对象

        ml = TextMobject("=ccsn.ml",tex_to_color_map={"ml": RED})
        ga = TextMobject("=ccsn.ga",tex_to_color_map={"ga": YELLOW})
        cf = TextMobject("=ccsn.cf",tex_to_color_map={"cf": GREEN})
        gq = TextMobject("=ccsn.gq",tex_to_color_map={"gq": BLUE})
        #几个短域名,后缀加上颜色

        ml.scale(2)
        ga.scale(2)
        cf.scale(2)
        gq.scale(2)
        #定义大小

        ml.move_to([-2,1,0],aligned_edge=LEFT)
        ga.move_to([-2,0,0],aligned_edge=LEFT)
        cf.move_to([-2,-1,0],aligned_edge=LEFT)
        gq.move_to([-2,-2,0],aligned_edge=LEFT)
        #排列好位置

        self.play(
            Write(ml),
            Write(ga),
            Write(cf),
            Write(gq)
        )#写出四个短域名
        

效果如下

当然这里仅仅展示了冰山一角,有很多数学公式的插入以及3D和2D坐标系的图形变换就是更复杂的东西了

e.g 2还可以看看这个,显得高级很多

2.2 资料指北

非官方文档——写的比官方的好
非官方教程 in bilibili ——简单易懂
官方源代码
官方文档——写得很草率,还没有完工(而且是个404网站
3b1b in YouTube
3b1b in bilibili(搬运——双语且内容一样
3b1b 官网
LaTeX公式在线编辑——在python代码里需要注意转义反斜杠’\’
知乎专栏教程——李狗嗨?Windows安装的文章也是他写的

END(预祝3b1b在b站粉丝即将破百万

发表评论

电子邮件地址不会被公开。 必填项已用*标注