父爱动画代码python_Python爱心动画GIF

strip

之前写过一个在终端打印心形的程序,虽然看起来有点诡异。。。这次写一个爱心的GIF动画。

使用一个库gif, 可以制作matplotlib图表的gif动画。上面那个gif动画,是隐去了坐标轴了后的动画了。

正文

下面三个库,没安装的可以通过命令安装:

$pip install matplotlib

$pip install numpy

$pip install gif

实际代码:

import gif

import numpy as np

from matplotlib import pyplot as plt

# formula see https://www.wolframalpha.com/share/clip?f=d41d8cd98f00b204e9800998ecf8427edn0q2vrnts

t = np.linspace(0, 6, 100)

x = 16 * np.sin(t) ** 3

y = 13 * np.cos(t) - 5 * np.cos(2 * t) - 2 * np.cos(3 * t) - np.cos(4 * t)

## 绘制每一帧的图片

@gif.frame

def plot_love(x, y):

plt.scatter(x, y, 60, c="g", alpha=0.7, marker=r'$\heartsuit$')

plt.axis("off")

frames = []

for i in range(1, len(x)):

of = plot_love(x[:i], y[:i])

frames.append(of)

gif.save(frames, 'love.gif', duration=80)

代码解析

绘制心形的函数,可以见https://www.wolframalpha.com/share/clip?f=d41d8cd98f00b204e9800998ecf8427edn0q2vrnts

通过心形函数,算出x,y对应的坐标值,plot_love函数本身是个普通的绘制散点图的函数,marker是设置成心形,通过plt.axis("off")用于去除坐标轴。如果一次性将所有数据(例子程序中共100个坐标数据)传入该函数,作图出来是完整的一张心形图,就向下面这样:

1240

动画中的从一个小爱心,慢慢变成大爱心,实际就是第一次传一个坐标的数据去作图,然后依次增加直到所有数据都用完。把所有的图按照顺序合在一起做成gif动画,就是呈现了动画效果了。

@gif.frame装饰器是把将每个图片作图加载到内存中,通过for循环,确定每一帧的图片,保存到frames列表里,最后通过gif.save函数合在一起做成gif动画。

参考

PS: 因为作者鼓励提交动画例子。所以如果在gif的GitHub仓库里看到相似的gif,那不是我不要脸直接抄人家的代码,是我提交的PR...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值