精华内容
下载资源
问答
  • 项目组制内部成员管理,图片、文档自动转化为二维程序沟通,3Dmax输出包自动转化为三维程序沟通 4、私人云盘,无限浏览 一个项目占N个GB?图驴嫌你项目太少,云端已有文件,你再传瞬间秒传,不支持分享,更私密、...
  • java应用软件程序设计

    2008-04-28 14:08:56
    39 实例17 使用工具提示 42 实例18 不同界面的风格 43 第2章 Java的维和三图形处理 45 实例19 颜色处理 46 实例20 合成效果 47 实例21 多种字体效果 49 实例22 合成两个图片 53 实例23 ...
  • 阅读目录1、引言2、动画实现总结注: 在“实验设计与数据处理”的课后作业中,有一个数据可视化的作业,利用课程上学习的某种方法找一个二维函数的最大值,并将这个寻找的过程可视化。在作业里面利用了Matplotlib的...

    阅读目录1、引言

    2、动画实现

    总结注: 在“实验设计与数据处理”的课后作业中,有一个数据可视化的作业,利用课程上学习的某种方法找一个二维函数的最大值,并将这个寻找的过程可视化。在作业里面利用了Matplotlib的Animation类实现可视化的动态展示。

    1、引言

    利用Animation类制动画主要是参考了官方的教程:Matplotlib-Animation。为了更加清析说明Animation类是如何实现动画的,本文只简单地介绍一个点沿着sin函数运动的例子,分析一下Animation实现动画的原理。其它复杂的动画同样也是据此原理,可以实现下面的动画效果。第3幅图是作业的一个效果图。

    sin函数点运动 二阶摆钟(官方例子)

    image.png

    | [

    image.png

    |

    |

    image.png

    |

    2、动画实现

    这里主讲述上面的sin函数点运动的动画的实现。代码的运行环境为Python3.6 + Jupyter5.4。

    2.1 准备背景

    在绘制动画前,我们需将其sin函数的背景绘制出来。这一步很简单,与我们平时的绘图一样。

    import numpy as np

    import matplotlib

    import matplotlib.pyplot as plt

    import matplotlib.animation as animation

    # 指定渲染环境

    %matplotlib notebook

    # %matplotlib inline

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

    y = np.sin(x)

    fig = plt.figure(tight_layout=True)

    plt.plot(x,y)

    plt.grid(ls='--')

    plt.show

    image.png

    image.png

    |

    | 图2-1 sin背景图 | 图2-2 sin函数点运动效果1 |

    2.2 往背景中添加动画点

    这一步代码稍微多了一点点,且先看代码,再来解释。

    def update_points(num):

    '''

    更新数据点

    '''

    point_ani.set_data(x[num], y[num])

    return point_ani,

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

    y = np.sin(x)

    fig = plt.figure(tight_layout=True)

    plt.plot(x,y)

    point_ani, = plt.plot(x[0], y[0], 'ro')

    plt.grid(ls='--')

    # 开始制作动画

    ani = animation.FuncAnimation(fig, update_points, np.arange(0, 100), interval=100, blit=True)

    # ani.save('sin_test2.gif', writer='imagemagick', fps=10)

    plt.show

    上面的代码中,首先定义了一个update_points函数,用于更新绘制的图中的数据点。此函数的输入参数num代表当前动画的第几帧,函数的返回,即为我们需要更新的对象,需要特别注意的是:reuturn point_ani,这个逗号一定加上,否则动画不能正常显示。当然这里面操作的点对象point_ani我们一般会提前声明得到:point_ani, = plt.plot(x[0], y[0], 'ro')。接下来就是将此函数传入我们的FuncAnimation函数中,函数的参数说明可以参见官网,这里简要说明用到的几个参数。第1个参数fig:即为我们的绘图对象.

    第2个参数update_points:更新动画的函数.

    第3个参数np.arrange(0, 100):动画帧数,这需要是一个可迭代的对象。

    interval参数:动画的时间间隔。

    blit参数:是否开启某种动画的渲染。

    运行上面代码可以得到如图2-2所示的动画效果。

    2.3 往动画中添加其它效果

    上面实现的动画效果还比较单一,我们可以往其中添加一些文本显示,或者在不同的条件下改变点样式。这其实也非常简单,只需在update_points函数中添加一些额外的,你想要的效果代码即可。

    def update_points(num):

    if num%5==0:

    point_ani.set_marker('*')

    point_ani.set_markersize(12)

    else:

    point_ani.set_marker('o')

    point_ani.set_markersize(8)

    point_ani.set_data(x[num], y[num])

    text_pt.set_text('x=%.3f, y=%.3f'%(x[num], y[num]))

    return point_ani,text_pt,

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

    y = np.sin(x)

    fig = plt.figure(tight_layout=True)

    plt.plot(x,y)

    point_ani, = plt.plot(x[0], y[0], 'ro')

    plt.grid(ls='--')

    text_pt = plt.text(4, 0.8, '', fontsize=16)

    ani = animation.FuncAnimation(fig, update_points, np.arange(0, 100), interval=100, blit=True)

    # ani.save('sin_test3.gif', writer='imagemagick', fps=10)

    plt.show

    我在上面update_points函数中添加了一个文本,让它显示点的坐标值,同时在不同的帧,改变了点的形状,让它在5的倍数帧显示为五角星形状。

    |

    image.png

    |

    image.png

    |

    | 图2-3 sin函数点运动效果2 | 图2-4 sin函数点运动效果3 |

    再稍微改变一下,可以让文本跟着点动。只需将上面的代码update_points函数改为如下代码,其效果如图2-4所示。

    def update_points(num):

    point_ani.set_data(x[num], y[num])

    if num%5==0:

    point_ani.set_marker('*')

    point_ani.set_markersize(12)

    else:

    point_ani.set_marker('o')

    point_ani.set_markersize(8)

    text_pt.set_position((x[num], y[num]))

    text_pt.set_text('x=%.3f, y=%.3f'%(x[num], y[num]))

    return point_ani,text_pt,

    展开全文
  • 而FFT在fft12_ifft12.cpp这个文件里面,文件包括了一维FFT和二维FFT的函数,当然IFFT也是存在的。 关于DFT的部分,由于我在DFT的算法里面使用了Complex类与COMPLEX结构体(类包含了运算符的重载与一些常用函数),...
  •  OpenGL提供了丰富且易用的二维图形和图像操作的API函数,然而OpenGL最强大之处在于处理三维图形。使用OpenGL,读者可以在一个学期之内学习并掌握制作精美动画效果的技巧。  OpenGL的发展历史  OpenGL的第一个...
  • asp.net知识库

    2015-06-18 08:45:45
    与DotNet数据对象结合的自定义数据对象设计 () 数据集合与DataTable 与DotNet数据对象结合的自定义数据对象设计 (一) 数据对象与DataRow ASP.NET中大结果集的分页[翻译] .net 2.0 访问Oracle --与Sql Server的...
  • 第1章 了解.深入.动手做. 1.1 红透半边天的...10.5 AndroidQRCode二维条形码扫描仪——BitmapFactory.decodeByteArray 10.6 上班族今天中午要吃什么——热量骰子地图 10.7 掷杯筊——把手机放在空中甩事件处理...
  • 创意Android程序设计 10.1 手机手电筒——PowerManager控制WakeLock并改变手机亮度 10.2 GPS轨迹记录器——利用LocationListener在地图上画图并换算距离 10.3 女性贴身看护——AlarmManager.DatePicker.TimePicker ...
  • Google Android SDK开发范例大全(完整版) ...10.5 AndroidQRCode二维条形码扫描仪——BitmapFactory.decodeByteArray 10.6 上班族今天中午要吃什么——热量骰子地图 10.7 掷杯筊——把手机放在空中甩事件处理...
  • 作者简介 余志龙,来自于手机制造业、电视媒体业...10.5 AndroidQRCode二维条形码扫描仪——BitmapFactory.decodeByteArray 10.6 上班族今天中午要吃什么——热量骰子地图 10.7 掷杯筊——把手机放在空中甩事件处理...
  • Google Android SDK开发范例大全(完整版)共4个...10.5 AndroidQRCode二维条形码扫描仪——BitmapFactory.decodeByteArray 10.6 上班族今天中午要吃什么——热量骰子地图 10.7 掷杯筊——把手机放在空中甩事件处理...
  • │ │ │ └[思库教育]JS 第9集 二维数组.avi │ │ ├ │ │ │ ├[思库教育]JS 第14集 作业讲解.avi │ │ │ ├[思库教育]JS 第15集 作业讲解.avi │ │ │ ├[思库教育]JS 第16集 作业讲解.avi │ │ │ ├[思库...
  • 目录 第1章 了解.深入.动手做. ...10.5 AndroidQRCode二维条形码扫描仪——BitmapFactory.decodeByteArray 10.6 上班族今天中午要吃什么——热量骰子地图 10.7 掷杯筊——把手机放在空中甩事件处理...
  • Google Android SDK开发范例大全(完整版)共4个...10.5 AndroidQRCode二维条形码扫描仪——BitmapFactory.decodeByteArray 10.6 上班族今天中午要吃什么——热量骰子地图 10.7 掷杯筊——把手机放在空中甩事件处理...
  • Google Android SDK开发范例大全(完整版)共4个...10.5 AndroidQRCode二维条形码扫描仪——BitmapFactory.decodeByteArray 10.6 上班族今天中午要吃什么——热量骰子地图 10.7 掷杯筊——把手机放在空中甩事件处理...
  • Google Android SDK开发范例大全(完整版)共4个...10.5 AndroidQRCode二维条形码扫描仪——BitmapFactory.decodeByteArray 10.6 上班族今天中午要吃什么——热量骰子地图 10.7 掷杯筊——把手机放在空中甩事件处理...
  • Google Android SDK开发范例大全 ...10.5 AndroidQRCode二维条形码扫描仪——BitmapFactory.decodeByteArray 10.6 上班族今天中午要吃什么——热量骰子地图 10.7 掷杯筊——把手机放在空中甩事件处理...
  • Google Android SDK开发范例大全 ...10.5 AndroidQRCode二维条形码扫描仪——BitmapFactory.decodeByteArray 10.6 上班族今天中午要吃什么——热量骰子地图 10.7 掷杯筊——把手机放在空中甩事件处理...
  • 好东西与大家同享! Google Android SDK开发范例...10.5 AndroidQRCode二维条形码扫描仪——BitmapFactory.decodeByteArray 10.6 上班族今天中午要吃什么——热量骰子地图 10.7 掷杯筊——把手机放在空中甩事件处理...
  • 内容简介  本书以android手机应用程序开发为...10.5android qr code二维条形码扫描仪——bitmapfactory.decodebytearray 10.6上班族今天中午要吃什么——热量骰子地图 10.7掷杯筊——把手机放在空中甩事件处理...
  • ASP.NET精品课程+源代码

    千次下载 热门讨论 2009-01-05 20:15:51
    ASP.NET精品课程整体设计 一、 概述 《ASP.NET程序设计》课程是一门重要的计算机专业课,它是计算机网络、计算机软件及应用、计算机技术及应用、计算机信息管理、计算机网络管理及维护、电子商务、计算机多媒体技术...
  • 本书以案例为核心,包括“案例解析”、“案例注释”、“知识拓展”、“课后作业”和“答案”。通过这样的安排,力求使读者通过学习,达到举一反三的目的。 本书光盘包含书中所有实例的素材和最终效果的PSD分层文件...
  • Java开发技术大全(500个源代码).

    热门讨论 2012-12-02 19:55:48
    assignTwoDime.java 为二维数组赋值 getMaxElem.java 获取数组中的最大元素 incCapicity.java 演示StingBuffer的容量增长 SortDemo.java 排序示例 travelTwoDime.java 遍历二维数组 traversing.java 遍历一维...
  • 例如,容易实现协议的设计。 Java EJB中有、无状态SessionBean的两个例子 两个例子,无状态SessionBean可会话Bean必须实现SessionBean,获取系统属性,初始化JNDI,取得Home对象的引用,创建EJB对象,计算利息等;在...
  • JAVA上百实例源码以及开源项目

    千次下载 热门讨论 2016-01-03 17:37:40
    例如,容易实现协议的设计。 Java EJB中有、无状态SessionBean的两个例子 两个例子,无状态SessionBean可会话Bean必须实现SessionBean,获取系统属性,初始化JNDI,取得Home对象的引用,创建EJB对象,计算利息等;...
  • java开源包1

    千次下载 热门讨论 2013-06-28 09:14:34
    Blister是一个用于操作苹果进制PList文件格式的Java开源类库(可用于发送数据给iOS应用程序)。 重复文件检查工具 FindDup.tar FindDup 是一个简单易用的工具,用来检查计算机上重复的文件。 OpenID的Java客户端...
  • java开源包12

    热门讨论 2013-06-28 10:14:45
    Blister是一个用于操作苹果进制PList文件格式的Java开源类库(可用于发送数据给iOS应用程序)。 重复文件检查工具 FindDup.tar FindDup 是一个简单易用的工具,用来检查计算机上重复的文件。 OpenID的Java客户端...
  • Java资源包01

    2016-08-31 09:16:25
    Blister是一个用于操作苹果进制PList文件格式的Java开源类库(可用于发送数据给iOS应用程序)。 重复文件检查工具 FindDup.tar FindDup 是一个简单易用的工具,用来检查计算机上重复的文件。 OpenID的Java客户端...
  • java开源包101

    2016-07-13 10:11:08
    Blister是一个用于操作苹果进制PList文件格式的Java开源类库(可用于发送数据给iOS应用程序)。 重复文件检查工具 FindDup.tar FindDup 是一个简单易用的工具,用来检查计算机上重复的文件。 OpenID的Java客户端...

空空如也

空空如也

1 2 3
收藏数 41
精华内容 16
关键字:

二维设计作业图片