爱心动画python_Python爱心动画GIF
之前写过一个在终端打印心形的程序,虽然看起来有点诡异。。。这次写一个爱心的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相关推荐
- css立体3d效果动画,css3 实现动画,变换基点及3D效果~
各位小伙伴 上次分享的爱心感觉如何呀~ 动画效果 首先,娜娜在这边给大家认个错,上次分享落下了一个东西,就是动画效果,没有动画是实现不了爱心一条一条的动作的. 虽然那个爱心源代码已经给大家了,只要复制 ...
- Android动画攻略—帧动画、补间动画、属性动画
前言 动画时Android开发中使用频率比较高的功能. 对Android提供的补间动画,帧动画以及属性动画做出归纳总结. 目录 1. 帧动画 帧动画总体实现比较简单,其实现本身是实现一个图片集的连续播 ...
- Android动画之帧动画和补间动画
Android系统提供三种动画:帧动画.补间动画和属性动画.这里先分析总结帧动画和补间动画. FrameAnimation 帧动画,通俗来说就是按照图片动作顺序依次播放来形成动画,创建帧动画可以用 x ...
- 【译】CSS动画 vs JS动画
原文地址 目前有两个主流的方法在web上创建动画:使用CSS或JS.到底选择哪种方法来实现动画,完全取决于你的项目以及你想要达到的效果. tips: 对于简单的只出现一次的过渡效果,可以采用CSS动画 ...
- android jason动画,Android 动画之Lottie动画使用
Android 动画之Lottie动画使用 一:简介 Lottie是Airbnb开源的一套跨平台的完整解决方案,设计师只需要使用After Effects(简称AE)设计动画之后,使用Lottic提供 ...
- 每日一道面试题(第7期)---Android补间动画与属性动画的区别
零零碎碎的东西总是记不长久,仅仅学习别人的文章也只是他人咀嚼后留下的残渣.无意中发现了这个每日一道面试题,想了想如果只是简单地去思考,那么不仅会收效甚微,甚至难一点的题目自己可能都懒得去想,坚持不下来 ...
- css3动画,监控动画执行完毕
在CSS3之前,在网页上要做动画,一般使用javascript来实现,用timer定时执行一些操作来实现动画效果. 自有了CSS3之后,在网页上做动画变得更简单了.相对于使用javascript的实现 ...
- Unity3D Mecanim 动画系统骨骼动画问题解决方法
Unity3D Mecanim 动画系统骨骼动画问题解决方法 参考文章: (1)Unity3D Mecanim 动画系统骨骼动画问题解决方法 (2)https://www.cnblogs.com/al ...
- 生成Gif动画缩略图-Gif动画水印的改进
前面的文章中,实现过Gif动画添加水印,虽然目前还有一些悬而未决的问题有待解决,但对于大多数情况还是挺实用的,看园子里面有人发生成缩略图的文章,将原来的水印部分代码加以改造,实现了从Gif动画生成Gi ...
最新文章
- python转cython_Cython 0.23 发布 Python 的 C 语言扩展
- 在centos6中安装2.4版本的HTTPd
- java 判断qq_Java检测QQ是否在线状态
- ECCV2020 | Cityscapes上83.7 mIoU,通过解耦的主体和边缘监督改进语义分割
- Apache的详细配置
- 【bzoj3576】 Hnoi2014—江南乐
- Redis读写分离技术解析
- WinEdt10注册码
- BZOJ1566 [NOI2009]管道取珠 【dp】
- 哈尔滨工业大学车万翔:自然语言处理新范式
- Xposed框架指南
- ckplayer php,CKplayer 站外调用示例
- 网络技术学习:虚拟专用网络
- access操作mysql_Access数据库基础及应用(公选课) 第二章:Access2010数据库创建与操作...
- CF676A Nicholas and Permutation 题解
- ubuntu vi 方向键乱
- 图的基本算法(单源最短路径)
- 注册制掀起的激荡风云
- 单片机GPRS模块与web端通信
- 软件工程专业前景怎么样?
热门文章
- 苹果mp3软件_这几款苹果APP也许你会用得着,赶紧下载试试看!
- Halcon例程分析8:投影变换矫正倾斜图像
- MDK中自动添加程序编译日期版本
- 诺基亚收购Symbian触发移动开放平台大战
- 二手物品交易管理系统
- 2022年山西省11地市高新技术企业申报奖励补助政策及认定条件流程
- Mac 解决 gyp: No Xcode or CLT version detected! 报错
- WPF 设置TextBlock 自动换行
- HTML5+CSS3+ES5/6+TS+WebAPI前端入门/实习题库笔记
- 陕西云数据库_创业英雄汇:“秦盾云加密数据库系统”沈玉龙