如何基于如何基于Python Matplotlib实现网格动画实现网格动画
主要介绍了如何基于Python Matplotlib实现网格动画,文中通过示例代码介绍的非常详细,对大家的学习或者工
作具有一定的参考学习价值,需要的朋友可以参考下
—1—
如果你对本文的代码感兴趣,可以去 Github (文末提供)里查看。第一次运行的时候会报一个错误(还没找到解决办法),
不过只要再运行一次就正常了。
这篇文章虽然不是篇典型的数据科学类文章,不过它涉及到数据科学以及商业智能的应用。Python 的 Matplotlib 是最常用的
图表绘制以及数据可视化库。我们对折线图、柱状图以及热力图都比较熟悉,但你知道用 Matplotlib 还能做简单的动画吗?
下面就是用 Matplotlib 制作动画的例子。展示的是 John Conway 的 《The Game of Life》,这是一个 Metis(数据科学夏令
营)中的编程挑战题目,同时给了我一个机会来制作我的第一个 Python 动画。看看结果的动图:
这篇文章的重点还是主要放在 python 中如何用 Matploylib 制作动画。
但如果你不太熟悉模拟游戏的话(它更像是可以看的模拟动画,而非可以玩的游戏),我来给大家介绍一下规则:
一开始先设置一个 N×N 的网格(我的动画中用的是 50×50 );
接着随机地向格子中填充“小细胞”(一开始随机地从 2500 个格子中选取 1500 个进行填充);
如果邻居小细胞少于等于 1 个,那格子中的小细胞会死掉;
如果邻居大于等于 4 个的也会死掉;
只有 2 个或 3 个邻居时可以生存;
空的格子中如果正好有 3 个邻居,则会长出 1 个新的“小细胞”;
—2—
建立网格
我们首先导入所需的库。
import time
from IPython import display
import matplotlib.pyplot as plt
import matplotlib.animation as animation
我们会利用Matploylib 动画模块中的 FuncAnimation() 函数。 FuncAnimation()是通过多次调用一个函数并逐次更新图片来实
现让图片动起来的。我们来一步步地实现这个过程。
但首先,我们需要先初始化我们的网格。下面的几行代码用来存储我们输入的数据:
我们需要一个 50×50 大小的网格;
pad 变量可以使得计算邻居变得更容易。通过在边界外添加一层空白格子,我们就不需要额外再写一个逻辑来处理网格
的边界。因此我们 50×50 的网格其实是被一圈空白格子包围着,这使得实际的 numpy 序列的大小为 52×52;
initial_cels 变量表示在网格启动的时候我们想要多少“小细胞”。他们会被随机地分布在网格上。
# Input variables for the board
boardsize = 50 # board will be X by X where X = boardsize
pad = 2 # padded border, do not change this!
initial_cells = 1500 # this number of initial cells will be placed
# in randomly generated positions
评论5
最新资源