1/3
2/3
3/3
闲聊一下使用manim做可视化的优缺点
cigar666
2019年05月15日 23:03
收录于文集
共8篇

俗话说,字不如表,表不如图,图不如动画。这说的就是如何把冗杂的数据条理化、形象化进而变成直观形象的可视化结果的过程。大家在看过如3b1b​的相关使用manim制作的视频后,也一定十分认同,manim也是一个能将数据结果变得直观形象的十分有用的数学工具。这一期专栏,我们就来简单聊聊manim与可视化。若想学习如何使用manim,请查看我的关于manim学习​的其他文章。

(作者的一段废话:在之前就挖了一个坑,说到自己可能会稍微研究一下关于使用manim制作可视化动画的想法。自己下去抽空也的确稍微尝试了一下,也有了些感悟和想法。不过这些想法还是太零散,而且可视化涉及到的东西也蛮多的,目前还没有一个之后如何开展manim可视化这块专题的整体思路。不过可以在开始可视化专题前,简单聊聊manim制作可视化动画的优缺点,以及在什么情况下我们使用manim进行可视化会比较好,什么情况下会比较坑爹。)

好了,没有代码,没有关于manim具体知识点的内容,我们开始随便聊聊manim做可视化的优缺点。


Chapter 1:关于可视化

如果你在b站上搜索“可视化”的话,你应该会得到如下的结果:

b站上的可视化搜索结果

这些柱状图的随时间不断更新变化的动画视频的确也是可视化的一种,但不是全部。可视化(Visualization)是利用计算机图形学和图像处理技术,将数据转换成图形或图像在屏幕上显示出来,并进行交互处理的理论、方法和技术(来自百度百科)。所以,各种柱状图、饼状图、折线图、雷达图、散点图等都是对某种数据的可视化,在工程中各种CAD/CAE软件的前处理模型或后处理结果也是一种可视化,现在已越来越流行的AR和VR技术也和可视化有关。

一些可视化图片

我们日常生活和学习中也时常会使用各种工具对一些数据进行可视化,比如Excel里面输入数据生成的各种图表,在MATLAB中对各种数据进行二维或三维的显示,又或者在python中编写了爬虫,再利用python的可视化库或其他人编写的开源代码,就能生成在b站搜到的那种可视化动画了。

至于可视化编程,MATLAB及python的各种可视化库都能很好完成数据的获取与可视化。那么,我们又为什么要使用manim进行可视化,其可视化的优缺点又在哪里?

Chapter 2:manim进行可视化的优点

这章讲讲manim进行可视化的优点,这能回答我们为什么要使用manim进行可视化。

对于可视化,manim优点在于:

  1. manim作为一个基于python编程的数学动画引擎,其自身就能很好的生成各种基本二维三维的形体,及各种由方程或点来定义的曲线或曲面;

  2. manim所生成的是可视化动画,比起一般的图片能更好地表达数据在可视化结果中的含义与相互关系;

  3. manim能够利用python的各种库来很好地实现对各种来源各种类型的数据的处理,python本身就在大数据的获取和处理及数值计算上十分出色,这将使基于python的manim大为受益;

  4. manim对数学或物理方法的实现过程的可视化效果相当出彩;

  5. 相比如matplotlib等事先已经封装好的库,使用manim能够更灵活地定义你想要表现的每个细节,做出上限更高的效果(当然得付出更多的经历)。

3b1b中使用manim做出的可视化效果截图

Chapter 3:manim可视化的不足

在可视化中,manim表现的不足之处在于:

  1. manim毕竟不是专门为了可视化而编写的,除了基本的形体、坐标轴、曲线等对象,manim没有专门为了可视化而封装的类或对象(比如我们需要做一个饼状图或柱状图,在matplotlib中我们直接有现成的类和方法,而在manim中得自己从头去做),我们当然可以在manim的基础上作出上限更高更美观漂亮的可视化结果,但还有很多时候,我们仅仅需要在几分钟内就能利用现有的数据和代码生成可视化结果;

  2. manim虽然能作出高质量的动画,但这些动画并不能实现和用户交互;

  3. 对于大量的二维/三维数据,manim的渲染效率应该不会太高(这点没有具体测试或数据上的支持,仅为主观猜测)。

Chapter 4:总结——manim适合做什么样类型的可视化

所以,我们简单总结一下manim适合和不适合的可视化类型(不是很绝对,具体情况还得具体分析)。

下面是一些可能会出现的情况:

  1. 如果你希望通过已有数据,分分钟快速搞出图表或曲面/曲线等结果,那请不要使用manim。你的时间很珍贵,使用python的可视化库matplotlib、使用MATLAB或使用Excel都能帮你节约大量时间;

  2. 如果你编程能力太弱,或懒得学习,只想改改别人的代码就可以搞出一份还过得去的可视化结果,请不要使用manim。可以像第一点中一样使用python或matlab,网上有大量现成的例子,改改就能用;

  3. 如果你的数据量很大,那请慎重考虑是否使用manim进行可视化,渲染时可能会很卡,调试周期可能很长;

  4. 如果你想将数据可视化的结果用于科研论文或其他需要一定格式规范的场合,使用manim也不是不可,但需要在编写代码是将对应格式的效果考虑进去(这样可能会造成格外的编程与调试工作,可能反而不如利用其他可视化工具如tecplot等);

  5. 如果你的数据量不算大,你想对其进行静态或简单的动态的可视化展示,可以使用manim,也可使用其他可视化工具;

  6. 如果你的目的之一在于演示数学或物理方法的实现过程,或者某个流程的动态展示,那么manim将会是很好(甚至可能是最好)的选择之一;

  7. 如果你本就打算以视频动画的方式展示可视化结果,请选择manim;

  8. 如果你看了3b1b的视频,想在可视化过程中做出3b1b风格的高逼格动画,那你只能使用manim了


好了,就聊到这里了。关于manim我之后还会写一些实例篇和专题篇的相关内容,敬请期待。

Thanks for watching~      []~( ̄▽ ̄)~*