之前写过一个在终端打印心形的程序,虽然看起来有点诡异。。。这次写一个爱心的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个坐标数据)传入该函数,作图出来是完整的一张心形图,就向下面这样:

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

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

参考

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

爱心动画python_Python爱心动画GIF相关推荐

  1. css立体3d效果动画,css3 实现动画,变换基点及3D效果~

    各位小伙伴 上次分享的爱心感觉如何呀~ 动画效果 首先,娜娜在这边给大家认个错,上次分享落下了一个东西,就是动画效果,没有动画是实现不了爱心一条一条的动作的. 虽然那个爱心源代码已经给大家了,只要复制 ...

  2. Android动画攻略—帧动画、补间动画、属性动画

    前言 动画时Android开发中使用频率比较高的功能. 对Android提供的补间动画,帧动画以及属性动画做出归纳总结. 目录 1. 帧动画 帧动画总体实现比较简单,其实现本身是实现一个图片集的连续播 ...

  3. Android动画之帧动画和补间动画

    Android系统提供三种动画:帧动画.补间动画和属性动画.这里先分析总结帧动画和补间动画. FrameAnimation 帧动画,通俗来说就是按照图片动作顺序依次播放来形成动画,创建帧动画可以用 x ...

  4. 【译】CSS动画 vs JS动画

    原文地址 目前有两个主流的方法在web上创建动画:使用CSS或JS.到底选择哪种方法来实现动画,完全取决于你的项目以及你想要达到的效果. tips: 对于简单的只出现一次的过渡效果,可以采用CSS动画 ...

  5. android jason动画,Android 动画之Lottie动画使用

    Android 动画之Lottie动画使用 一:简介 Lottie是Airbnb开源的一套跨平台的完整解决方案,设计师只需要使用After Effects(简称AE)设计动画之后,使用Lottic提供 ...

  6. 每日一道面试题(第7期)---Android补间动画与属性动画的区别

    零零碎碎的东西总是记不长久,仅仅学习别人的文章也只是他人咀嚼后留下的残渣.无意中发现了这个每日一道面试题,想了想如果只是简单地去思考,那么不仅会收效甚微,甚至难一点的题目自己可能都懒得去想,坚持不下来 ...

  7. css3动画,监控动画执行完毕

    在CSS3之前,在网页上要做动画,一般使用javascript来实现,用timer定时执行一些操作来实现动画效果. 自有了CSS3之后,在网页上做动画变得更简单了.相对于使用javascript的实现 ...

  8. Unity3D Mecanim 动画系统骨骼动画问题解决方法

    Unity3D Mecanim 动画系统骨骼动画问题解决方法 参考文章: (1)Unity3D Mecanim 动画系统骨骼动画问题解决方法 (2)https://www.cnblogs.com/al ...

  9. 生成Gif动画缩略图-Gif动画水印的改进

    前面的文章中,实现过Gif动画添加水印,虽然目前还有一些悬而未决的问题有待解决,但对于大多数情况还是挺实用的,看园子里面有人发生成缩略图的文章,将原来的水印部分代码加以改造,实现了从Gif动画生成Gi ...

最新文章

  1. python转cython_Cython 0.23 发布 Python 的 C 语言扩展
  2. 在centos6中安装2.4版本的HTTPd
  3. java 判断qq_Java检测QQ是否在线状态
  4. ECCV2020 | Cityscapes上83.7 mIoU,通过解耦的主体和边缘监督改进语义分割
  5. Apache的详细配置
  6. 【bzoj3576】 Hnoi2014—江南乐
  7. Redis读写分离技术解析
  8. WinEdt10注册码
  9. BZOJ1566 [NOI2009]管道取珠 【dp】
  10. 哈尔滨工业大学车万翔:自然语言处理新范式
  11. Xposed框架指南
  12. ckplayer php,CKplayer 站外调用示例
  13. 网络技术学习:虚拟专用网络
  14. access操作mysql_Access数据库基础及应用(公选课) 第二章:Access2010数据库创建与操作...
  15. CF676A Nicholas and Permutation 题解
  16. ubuntu vi 方向键乱
  17. 图的基本算法(单源最短路径)
  18. 注册制掀起的激荡风云
  19. 单片机GPRS模块与web端通信
  20. 软件工程专业前景怎么样?

热门文章

  1. 苹果mp3软件_这几款苹果APP也许你会用得着,赶紧下载试试看!
  2. Halcon例程分析8:投影变换矫正倾斜图像
  3. MDK中自动添加程序编译日期版本
  4. 诺基亚收购Symbian触发移动开放平台大战
  5. 二手物品交易管理系统
  6. 2022年山西省11地市高新技术企业申报奖励补助政策及认定条件流程
  7. Mac 解决 gyp: No Xcode or CLT version detected! 报错
  8. WPF 设置TextBlock 自动换行
  9. HTML5+CSS3+ES5/6+TS+WebAPI前端入门/实习题库笔记
  10. 陕西云数据库_创业英雄汇:“秦盾云加密数据库系统”沈玉龙