精华内容
下载资源
问答
  • 一般而言,在绘制复杂动画时,主要借助模块animation来完成import numpy as npimport matplotlib.pyplot as pltimport matplotlib as mplfrom matplotlib.animation import FuncAnimation# mpl.use("Qt5Agg")mpl....

    一般而言,在绘制复杂动画时,主要借助模块animation来完成

    import numpy as np

    import matplotlib.pyplot as plt

    import matplotlib as mpl

    from matplotlib.animation import FuncAnimation

    # mpl.use("Qt5Agg")

    mpl.rcParams[‘font.sans-serif‘] = [‘SimHei‘]

    mpl.rcParams[‘font.serif‘] = [‘SimHei‘]

    mpl.rcParams[‘axes.unicode_minus‘] = False # 解决保存图像是负号‘-‘显示为方块的问题,或者转换负号为字符串

    fig, ax = plt.subplots(1, 1)

    x = np.linspace(0, 2 * np.pi, 5000)

    y = np.exp(-x) * np.cos(2 * np.pi * x)

    line, = ax.plot(x, y, color="cornflowerblue", lw=3)

    ax.set_ylim(-1.0, 1.0)

    # to clear current frame

    def init():

    line.set_ydata([np.nan] * len(x))

    return line,

    # to update the data

    def animate(data):

    line.set_ydata(np.exp(-x) * np.cos(2 * np.pi * x + float(data) / 100))

    return line,

    # to call class FuncAnimation which connects animate and init

    ani = FuncAnimation(fig, animate, init_func=init, frames=200, interval=2, blit=True)

    # to save the animation

    ani.save("movie.mp4", fps=20, writer="ffmpeg")

    plt.show()

    下面展示其中的4帧结果

    431a04d73581c1b8f2d1bb8b656310f0.png

    129e64faaca6061195d179b4ddb20114.png

    abab24d5e9a7a699573e9c8d2e57c1e6.png

    2981f8dd121389ea8a35439f7e83eb07.png

    line,中的逗号是不能省略的,不然就不是Line2D对象了

    FuncAnimation的构造函数主要的参数有Figure对象、函数func、帧数frames,帧时间间隔interval

    原文:https://www.cnblogs.com/ice-coder/p/12908708.html

    展开全文
  • 3D中的散点图是mpl_toolkits.mplot3d.art3d.Path3...因此,不在动画的每次迭代中创建整个绘图可能是有益的,而是仅更新其点.以下是如何执行此操作的工作示例.import numpy as npfrom matplotlib import pyplot as ...

    3D中的散点图是mpl_toolkits.mplot3d.art3d.Path3DCollection对象.这提供了一个属性_offsets3d,它承载一个元组(x,y,z),可用于更新散点的坐标.因此,不在动画的每次迭代中创建整个绘图可能是有益的,而是仅更新其点.

    以下是如何执行此操作的工作示例.

    import numpy as np

    from matplotlib import pyplot as plt

    from mpl_toolkits.mplot3d import Axes3D

    import matplotlib.animation

    import pandas as pd

    a = np.random.rand(2000, 3)*10

    t = np.array([np.ones(100)*i for i in range(20)]).flatten()

    df = pd.DataFrame({"time": t ,"x" : a[:,0], "y" : a[:,1], "z" : a[:,2]})

    def update_graph(num):

    data=df[df['time']==num]

    graph._offsets3d = (data.x, data.y, data.z)

    title.set_text('3D Test, time={}'.format(num))

    fig = plt.figure()

    ax = fig.add_subplot(111, projection='3d')

    title = ax.set_title('3D Test')

    data=df[df['time']==0]

    graph = ax.scatter(data.x, data.y, data.z)

    ani = matplotlib.animation.FuncAnimation(fig, update_graph, 19,

    interval=40, blit=False)

    plt.show()

    该解决方案不允许blitting.但是,根据使用情况,可能根本不需要使用散点图;使用正常情节可能同样可能,这允许blitting – 如下例所示.

    import numpy as np

    from matplotlib import pyplot as plt

    from mpl_toolkits.mplot3d import Axes3D

    import matplotlib.animation

    import pandas as pd

    a = np.random.rand(2000, 3)*10

    t = np.array([np.ones(100)*i for i in range(20)]).flatten()

    df = pd.DataFrame({"time": t ,"x" : a[:,0], "y" : a[:,1], "z" : a[:,2]})

    def update_graph(num):

    data=df[df['time']==num]

    graph.set_data (data.x, data.y)

    graph.set_3d_properties(data.z)

    title.set_text('3D Test, time={}'.format(num))

    return title, graph,

    fig = plt.figure()

    ax = fig.add_subplot(111, projection='3d')

    title = ax.set_title('3D Test')

    data=df[df['time']==0]

    graph, = ax.plot(data.x, data.y, data.z, linestyle="", marker="o")

    ani = matplotlib.animation.FuncAnimation(fig, update_graph, 19,

    interval=40, blit=True)

    plt.show()

    展开全文
  • 您可以单独保存每个图像,然后调用imageMagick将它们转换为动画gif,而不是调用动画.请参阅下面的代码并注意convert.exe的参数.from __future__ import divisionfrom numpy import pi, sin, cos, mgridfrom scipy.s...

    我认为这真的是一个错误.

    但是,如果您更关心结果而不是达到目标的方式,那么下面的工作就可以完成.您可以单独保存每个图像,然后调用imageMagick将它们转换为动画gif,而不是调用动画.

    请参阅下面的代码并注意convert.exe的参数.

    from __future__ import division

    from numpy import pi, sin, cos, mgrid

    from scipy.special import jn, jn_zeros

    from mpl_toolkits.mplot3d import Axes3D

    import matplotlib.pyplot as plt

    from matplotlib import rcParams

    import subprocess

    # In Windows the next line should provide the full path to convert.exe

    # since convert is a Windows command

    path_to_convert = "C:\Program Files\ImageMagick-6.9.3\convert.exe"

    #rcParams['animation.convert_path'] = path_to_convert

    rcParams['savefig.transparent'] = True

    rcParams['savefig.dpi'] = 130

    rcParams['savefig.pad_inches'] = 0

    plot_args = {'rstride': 1, 'cstride': 1, 'cmap':"RdYlBu",

    'linewidth': 0.5, 'antialiased': True, 'color': '#1e1e1e',

    'shade': True, 'alpha': 1.0, 'vmin': -1, 'vmax':1}

    def data_gen(num):

    ax.cla()

    ax.clear()

    m, n = 1, 2

    lam = jn_zeros(m, n)[-1]

    dt = 2*pi/(30*lam)

    z = cos(m*t)*jn(m, lam*r)*sin(lam*num*dt)

    surf = ax.plot_surface(x, y, z, **plot_args)

    ax.view_init(elev=30, azim=45)

    ax.set_xlim(-0.6, 0.6)

    ax.set_ylim(-0.6, 0.6)

    ax.set_zlim(-1, 1)

    ax.axis("off")

    fig.patch.set_visible(False)

    ax.patch.set_visible(False)

    ax.set_axis_off()

    ax._axis3don = False

    return surf

    r, t = mgrid[0:1:20j, 0:2*pi:40j]

    x, y = r*cos(t), r*sin(t)

    fig = plt.figure(facecolor=None, frameon=False)

    ax = fig.add_subplot(111, projection='3d')

    for i in range(30):

    data_gen(i)

    plt.savefig("drum_{n:02d}.png".format(n=i), transparent=True, frameon=False)

    print i,

    args = [path_to_convert, "-delay", "10", "-loop" , "0", "-dispose", "Background", "drum_*.png", "output.gif"]

    subprocess.call(args, shell=True)

    subprocess.call(["del", "/Q", "drum_*.png"], shell=True)

    print "\ndone"

    请注意,对imageMagick和delete命令的调用可能是系统依赖的.此脚本已在Windows 8下使用imageMagick 7.0.3(Q16)进行了测试.

    展开全文
  • 效果:CAEmitterLayer是CALayer的一个子类,和CAEmitterCell一起使用可以创造出多样的动画效果。CAEmitterLayer的属性:/*@interface CAEmitterLayer : CALayer--粒子的数组 把设置好的粒子放入数组设置到layer上@...

    效果:

    CAEmitterLayer是CALayer的一个子类,和CAEmitterCell一起使用可以创造出多样的动画效果。

    CAEmitterLayer的属性:

    /*@interface CAEmitterLayer : CALayer

    --粒子的数组 把设置好的粒子放入数组设置到layer上

    @property(nullable, copy) NSArrayemitterCells;

    --layer生产率 与cell的birthRate相乘就是粒子的生产率

    @property float birthRate;

    --layer存在时间 同上

    @property float lifetime;

    --发射源中心点的位置

    @property CGPoint emitterPosition;

    --z轴上的位置

    @property CGFloat emitterZPosition;

    --是发射源的大小 并不是layer的大小

    @property CGSize emitterSize;

    --不清楚是什么效果

    @property CGFloat emitterDepth;

    --发射源的形状 有圆形 方形 线型等

    @property(copy) NSString *emitterShape;

    --发散形式 “layerPoints”是指发射粒子的位置在发射源的关键点上

    如方形发射源的四个角点 圆形发射源的中心点

    “OutLine”就是指例子发射的位置位于发射源的边框

    “surface”即是表面 “volume”暂时不清楚

    @property(copy) NSString *emitterMode;

    --描绘模式 “unordered”不规律的 增加了立体感

    “oldestFirst”先生成的在上 “oldestLast”反之

    “backToFront”根据z轴上的位置进行描绘 “additive”发射源的多种粒子进行混合

    @property(copy) NSString *renderMode;

    --是否展示在z轴上的效果 把图层进行3d变形如沿y轴旋转90度 会有很明显的立体效果

    @property BOOL preservesDepth;

    --发射速度 和cell的速度属性一起决定了粒子的速度 猜测粒子的速度是两者的乘积

    而且和cell的速度属性不同 这个属性可以为负

    为负的时候发散方向是向反方向的 为正时是向指定方向的

    @property float velocity;

    -- 缩放大小 和速度相同 粒子的scale值是两者相乘 也可以为负 为负时效果不清楚

    @property float scale;

    -- 同上面的两个属性

    @property float spin;

    -- 可能是给图层中需要用到的随机数设置种子

    @property unsigned int seed;*/

    CAEmitterCell的部分属性

    /*

    --是否允许被绘制出来

    @property(getter=isEnabled) BOOL enabled;

    --生成速率

    @property float birthRate;

    --生存周期

    @property float lifetime;

    --生存周期的绝对值的偏移量的最大值 。。。

    @property float lifetimeRange;

    --z轴方向上的发射角度

    @property CGFloat emissionLatitude;

    --在xy平面上的发射角度

    @property CGFloat emissionLongitude;

    --放射角度的偏移量

    @property CGFloat emissionRange;

    --放射速度

    @property CGFloat velocity;

    --速度偏移量

    @property CGFloat velocityRange;

    --在三个坐标轴上的速度增量 可以做出类似重力 风吹的效果

    @property CGFloat xAcceleration;

    @property CGFloat yAcceleration;

    @property CGFloat zAcceleration;

    --缩放数值

    @property CGFloat scale;

    --缩放数值的偏移量

    @property CGFloat scaleRange;

    --缩放速度 不清楚怎么设置 可能和velocity属性有关系

    @property CGFloat scaleSpeed;

    --旋转

    @property CGFloat spin;

    --旋转的偏移量

    @property CGFloat spinRange;

    --设置cell的颜色 content的颜色会影响实际颜色

    @property(nullable) CGColorRef color;

    --设置三原色和透明度的值 偏移值 0-1

    @property float redRange;

    @property float greenRange;

    @property float blueRange;

    @property float alphaRange;

    --变色速率

    @property float redSpeed;

    @property float greenSpeed;

    @property float blueSpeed;

    @property float alphaSpeed;

    --cell的内容 一般是UIImage

    @property(nullable, strong) id contents;

    --内容范围

    @property CGRect contentsRect;

    --内容缩放

    @property CGFloat contentsScale;

    */

    CAEmitterLayer和CAEmitterCell有众多属性,所以就有更多的搭配,从而实现多种多样的动画效果。

    烟花效果只是其中一种:

    烟花的两个图片:

    烟花效果,效果实现代码如下 :

    (void)viewDidLoad {

    [super viewDidLoad];

    // Do any additional setup after loading the view, typically from a nib.

    self.view.backgroundColor = [UIColor blackColor];

    self.caELayer = [CAEmitterLayer layer];

    // 发射源

    self.caELayer.emitterPosition = CGPointMake(self.view.frame.size.width / 2, self.view.frame.size.height - 50);

    // 发射源尺寸大小

    self.caELayer.emitterSize = CGSizeMake(50, 0);

    // 发射源模式

    self.caELayer.emitterMode = kCAEmitterLayerOutline;

    // 发射源的形状

    self.caELayer.emitterShape = kCAEmitterLayerLine;

    // 渲染模式

    self.caELayer.renderMode = kCAEmitterLayerAdditive;

    // 发射方向

    self.caELayer.velocity = 1;

    // 随机产生粒子

    self.caELayer.seed = (arc4random() % 100) + 1;

    // 不超出范围

    //self.caELayer.frame = CGRectMake(0, 0, 300, 300);

    //self.caELayer.masksToBounds = YES;

    // cell

    CAEmitterCell *cell = [CAEmitterCell emitterCell];

    // 速率

    cell.birthRate = 1.0;

    // 发射的角度

    cell.emissionRange = 0.11 * M_PI;

    // 速度

    cell.velocity = 300;

    // 范围

    cell.velocityRange = 150;

    // Y轴 加速度分量

    cell.yAcceleration = 75;

    // 声明周期

    cell.lifetime = 2.04;

    //是个CGImageRef的对象,既粒子要展现的图片

    cell.contents = (id)

    [[UIImage imageNamed:@"FFRing"] CGImage];

    // 缩放比例

    cell.scale = 0.2;

    // 粒子的颜色

    cell.color = [[UIColor colorWithRed:0.6

    green:0.6

    blue:0.6

    alpha:1.0] CGColor];

    // 一个粒子的颜色green 能改变的范围

    cell.greenRange = 1.0;

    // 一个粒子的颜色red 能改变的范围

    cell.redRange = 1.0;

    // 一个粒子的颜色blue 能改变的范围

    cell.blueRange = 1.0;

    // 子旋转角度范围

    cell.spinRange = M_PI;

    // 爆炸

    CAEmitterCell *burst = [CAEmitterCell emitterCell];

    // 粒子产生系数

    burst.birthRate = 1.0;

    // 速度

    burst.velocity = 0;

    // 缩放比例

    burst.scale = 2.5;

    // shifting粒子red在生命周期内的改变速度

    burst.redSpeed = -1.5;

    // shifting粒子blue在生命周期内的改变速度

    burst.blueSpeed = +1.5;

    // shifting粒子green在生命周期内的改变速度

    burst.greenSpeed = +1.0;

    //生命周期

    burst.lifetime = 0.35;

    // 火花 and finally, the sparks

    CAEmitterCell *spark = [CAEmitterCell emitterCell];

    //粒子产生系数,默认为1.0

    spark.birthRate = 400;

    //速度

    spark.velocity = 125;

    // 360 deg//周围发射角度

    spark.emissionRange = 2 * M_PI;

    // gravity//y方向上的加速度分量

    spark.yAcceleration = 75;

    //粒子生命周期

    spark.lifetime = 3;

    //是个CGImageRef的对象,既粒子要展现的图片

    spark.contents = (id)

    [[UIImage imageNamed:@"FFTspark"] CGImage];

    //缩放比例速度

    spark.scaleSpeed = -0.2;

    //粒子green在生命周期内的改变速度

    spark.greenSpeed = -0.1;

    //粒子red在生命周期内的改变速度

    spark.redSpeed = 0.4;

    //粒子blue在生命周期内的改变速度

    spark.blueSpeed = -0.1;

    //粒子透明度在生命周期内的改变速度

    spark.alphaSpeed = -0.25;

    //子旋转角度

    spark.spin = 2* M_PI;

    //子旋转角度范围

    spark.spinRange = 2* M_PI;

    self.caELayer.emitterCells = [NSArray arrayWithObject:cell];

    cell.emitterCells = [NSArray arrayWithObjects:burst, nil];

    burst.emitterCells = [NSArray arrayWithObject:spark];

    [self.view.layer addSublayer:self.caELayer];

    }

    你也可以根据自己的实际开发需要进行参数的调整

    展开全文
  • 然后让窗口在一个画着很多帧图像的图上面移动,当我们透过这个窗口去观察这幅图的时候,只要窗口沿着一个方向去运动,那么就会产生动画效果。今天我介绍的是通过块传输的方法去实现。surface.bli...
  • 我目前正在研究python bokeh,我想知道是否可以使用bokeh构建一个动画计数器。我要做的是从地图中选择一个地区的男性数量,并显示从0到特定地区的男性数量。请给我一些例子,如果有的话,或者用下面的地图给我看一个...
  • import numpy as npimport matplotlib.pyplot as pltimport mpl_toolkits.mplot3d.axes3d as p3import matplotlib.animation as animationdef make_helix(n):theta_max = 8 * np.pitheta = np.linspace(0, theta_max...
  • http://xuepython.cn/lesson/python_huahua_01这个网站的效果图如下,分为两个区域,画布区用于显示动画,代码区编写代码(不用安装任何软件哦~)image.png零基础的人可以学吗?学完就会Python编程了吗?...
  • 我是一名法国学生,目前我正在研究waves,我正在尝试制作一个wave的3D绘图,但我在python方面还不够好。第一个曲面可以用表演()但是如果我把绘图()我没有图形输出。在import numpy as npimport matplotlib.pyplot as...
  • 这里开始介绍使用Python库Pygame来编写游戏和动画,用代码来编写属于自己的游戏,想想就是特别有成就感,学习编程也会变得非常有趣。Pygame是一个开源的Python模块,可以用于2D游戏制作,包含对图像、声音、视频、.....
  • Python 中有很多不错的数据可视化库,但是极少能渲染 GIF 图或视频动画效果。本文就分享一下如何用 MoviePy 作为其他可视化库的通用插件,制作动画可视化效果,毕竟这年头,没图不行,有动图更好。MoviePy 能让我们...
  • 主要介绍了Python3实现的画图及加载图片动画效果,结合实例形式分析了Python3基于tkinter库进行图片加载动画效果的相关实现与使用技巧,需要的朋友可以参考下
  • {"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],"search_count":[{"count_phone":4,"count":4}]},"card":[{"des":"阿里云数据库专家保驾护航,为用户的数据库应用系统进行性能和风险评估,参与配合进行...
  • 好久没有分享些什么了,闲来无事看了一下apidemo ,于是自己练手, 给大家分享一个通过Animator 实现弹跳的篮球的效果. 我们可以把这动画拆解为3个动画1.小球落下2.小球形变(包括小球变宽,变矮)3.小球上升小球的落下和...
  • Python中绘图库matplotlib系列学习笔记(七)
  • 本文实例讲述了Python tkinter实现的图片移动碰撞动画效果。分享给大家供大家参考,具体如下:先来看看运行效果:具体代码如下:#!/usr/bin/python# -*- coding: utf-8 -*-import timetry:from tkinter import *...
  • 自己开发了一个股票智能分析软件,功能很强大,需要的点击下面的链接获取:1.1 Qt实现数字滚动动画效果1.1.1 应用场景说明如下图所示,需要显示人脸检测的数量,变动画的方式实现个位数字滚动,个位由9变成0时,十位...
  • js总结 js: 1.ECMAScript5 ES5语法 2.DOM CRUD 获取 3种方式 id tag ... 动画效果很难实现。 关于window.onload,举一个例子: window.οnlοad= function() { alert(1); } window.οnlοad= function() { alert(2); }
  • 1966年,SeymourPapert 和 WallyFeurzig 发明了一种专门给儿童学习编程的语言——LOGO 语言,它的特色就是通过编程指挥一个小海龟(turtle)在...要在 Qt 中实现这种动画效果,我的思路就是通过定时器刷新当前进度,...
  • 主要介绍了Python使用Matplotlib实现雨点图动画效果的方法,结合实例形式分析了win10安装ffmpeg及animation函数的使用相关操作技巧,需要的朋友可以参考下
  • Python3实实现现的的画画图图及及加加载载图图片片动动画画效效果果示示例例 这篇文章主要介绍了Python3实现的画图及加载图片动画效果,结合实例形式分析了Python3基于tkinter库进行图片 加载动画效果的相关实现与...
  • 您可能只想制作一个由矩形构成的类,每次更新烟熏时,它们都会向上和向左...您可以为其他粒子效果创建类似的类.class classsmoke(pygame.Rect):'classsmoke(location)'def __init__(self, location):self.width=1self....
  • 一个好的PPT不光需要整齐的格式、精彩的文案和配图,有时一个动画也能产生非常棒的吸睛效果,为整个PPT添加灵动...(以上动画作者:黑眼荃荃,公众号:eyeQuan)各种动画效果合理地混搭在了一起,效果堪比flash啊,有...
  • image.png-- coding: utf-8 --"""【简介】不规则窗体的动画实现"""import sysfrom PyQt5.QtWidgets import QApplication, QWidgetfrom PyQt5.QtGui import QPixmap, QPainter, QCursorfrom PyQt5.QtCore import Qt, ...
  • 本文实例讲述了Python使用Matplotlib实现雨点图动画效果的方法。分享给大家供大家参考,具体如下:关键点win10安装ffmpeganimation函数使用update函数win10安装ffmpeg因为最后要将动画图保存为.mp4格式,要用到...
  • 本文实例为大家分享了python实现机器人行走效果的具体代码,供大家参考,具体内容如下 #! /usr/bin/env python3# -*- coding: utf-8 -*-# fileName : robot_path.py# author : zoujiameng@aliyun.com.cn# 地上有一...
  • 本文实例讲述了Python3实现的画图及加载图片动画效果。分享给大家供大家参考,具体如下:#__*__coding:utf-8__*__#python3import timefrom tkinter import *def moveImage(event):#图片logo.gif的移动要绑定的函数if...
  • 先看效果图sin_cos.gif循序渐进一个超级简单的绘图示例:sample1.pngimport numpy as npimport matplotlib.pyplot as pltimport matplotlib.animation as animation#建立一个画板fig = plt.figure()#把画板分成1x1的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 751
精华内容 300
关键字:

python动画效果

python 订阅