美文网首页
Python爱心动画GIF

Python爱心动画GIF

作者: Z_bioinfo | 来源:发表于2022-06-09 20:36 被阅读0次
    love.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, 'D:\\Python_work_path\\python练习\\love.gif', duration=80)
    

    代码解析

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


    love.gif

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

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

    相关文章

      网友评论

          本文标题:Python爱心动画GIF

          本文链接:https://www.haomeiwen.com/subject/wxammrtx.html