『python』科学计算专项_科学绘图库matplotlib学习之绘制动画(待续)

示例代码

简单调用绘图

from matplotlib import pyplot as plt
import matplotlib.animation as animation
import numpy as np

def update_point(num):
    fig_points.set_data(data[:, 0:num])
    return fig_points,

fig1 = plt.figure()

num_point = 50
data = np.random.rand(2, num_point)
fig_points, = plt.plot([], [], ‘ro‘)

plt.xlim(0, 1)
plt.ylim(0, 1)
plt.xlabel(‘x‘)
plt.title(‘Scatter Point‘)

# interval
# repeat
# frames
# fargs
# init_func
anim = animation.FuncAnimation(fig1, update_point,num_point)

#anim = animation.FuncAnimation(fig1, update_point,frames=num_point, interval=50, blit=False, repeat=False)

plt.show()

利用帧做参数绘制

这种方式每经过interval的时间后会调用函数(传入当前帧号)绘制一幅新图更新原图:

  1. 建立子图、空白线
  2. 创建动画发生时调用的函数

    Init()是我们的动画在在创建动画基础框架(base frame)时调用的函数。这里我们们用一个非常简单的对line什么都不做的函数。这个函数一定要返回line对象,这个很重要,因为这样就能告诉动画之后要更新的内容,也就是动作的内容是line。--来自( http://mytrix.me/2013/08/matplotlib-animation-tutorial/

  3. 动画函数

    在这个动画函数中修改你的图

  4. 调用函数生成动态图

绘制正弦波函数:

可以使用多个线对象来同时更新多个子图于同一个动画生成器之中,不过这需要上面1~3步同时支持(就是写出来)多个线对象

import numpy as np
from matplotlib import pyplot as plt
from matplotlib import animation

# 1.First set up the figure, the axis, and the plot element we want to animate
fig = plt.figure()
ax = plt.axes(xlim=(0,2),ylim=(-2,2))
line, = ax.plot([],[],lw=2)

# 2.initialization function: plot the background of each frame
def init():
    line.set_data([],[])
    return line,

# 3.animation function.  This is called sequentially
# note: i is framenumber
def update(i):
    x = np.linspace(0,2,1000)
    y = np.sin(2 * np.pi * (x - 0.01 * i))  # 调整x相当于向右平移图像
    line.set_data(x,y)
    return line,

# call the animator.  blit=True means only re-draw the parts that have changed.
# 画布, 使用帧数做参数的绘制函数, init生成器.。anim = animation.FuncAnimation(fig,update,init_func=init,frames=200,interval=20,blit=False)
# frames=200   帧数
# interval=20  间隔

# anim.save(‘anim3.mp4‘, fps=30, extra_args=[‘-vcodec‘, ‘libx264‘])      # 保存为mp4
# anim.save(‘anim3.gif‘, writer=‘imagemagick‘)                           # 保存为gif

plt.show()

迭代器绘制法

绘制衰减波

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation

def data_gen():
    t = 0
    cnt = 0
    while cnt < 200:
        cnt += 1
        t += 0.1
        yield t,np.sin(2 * np.pi * t) * np.exp(-t / 10.)

def init():
    ax.set_ylim(-1.1,1.1)
    ax.set_xlim(0,10)
    line.set_data([],[])
    return line,

def update(datag):
    # update the data
    t,y = datag
    xdata.append(t)
    ydata.append(y)
    line.set_data(xdata,ydata)

    if max(xdata) > 10:
        ax.set_xlim(max(xdata) - 10,max(xdata))
    return line,

fig,ax = plt.subplots()
line, = ax.plot([],[],lw=2)
ax.grid()
xdata,ydata = [],[]

ani = animation.FuncAnimation(fig,update,data_gen,interval=10,repeat=False,init_func=init)
plt.show()

作业

时间: 2024-10-14 08:47:21

『python』科学计算专项_科学绘图库matplotlib学习之绘制动画(待续)的相关文章

『python』科学计算专项_科学绘图库matplotlib学习

思想:万物皆对象 作业 第一题: import numpy as np import matplotlib.pyplot as plt x = [1, 2, 3, 1] y = [1, 3, 0, 1] def plot_picture(x, y): plt.plot(x, y, color='r', linewidth='2', linestyle='--', marker='D', label='one') plt.xticks(list(range(-5,5,1))) plt.yticks

『python』科学计算专项_科学绘图库matplotlib学习(下)

基本的读取csv文件并绘制饼图 由于之前没有过实际处理的经验,所以这个程序还是值得一看,涉及了处理表格数据的基本方法: import matplotlib.pyplot as plt import pandas as pd # csv读取文件 data = pd.read_csv('OutOrder.csv',encoding='gb2312') # 每一列都兼容numpy的方法 a = data['方式'].values # 获取本列的内容的各种可能 typename = [] for i i

Python:2D绘图库matplotlib学习总结

本文为学习笔记----总结!大部分为demo,一部分为学习中遇到的问题总结,包括怎么设置标签为中文等.matlab博大精深,需要用的时候再继续吧. Pyplot tutorial Demo地址为:点击打开链接 一个简单的例子: # -*- coding: utf-8 -*- import matplotlib.pyplot as plt plt.plot([1, 4, 9, 16]) plt.ylabel('some numbers') plt.show() 运行结果为: 我只指定了一组list

『理论』科学计算专项_协方差

一.统计学的基本概念 统计学里最基本的概念就是样本的均值.方差.标准差.首先,我们给定一个含有n个样本的集合,下面给出这些概念的公式描述: 均值: 标准差: 方差: 均值描述的是样本集合的中间点,它告诉我们的信息是有限的,而标准差给我们描述的是样本集合的各个样本点到均值的距离之平均. 以这两个集合为例,[0, 8, 12, 20]和[8, 9, 11, 12],两个集合的均值都是10,但显然两个集合的差别是很大的,计算两者的标准差,前者是8.3后者是1.8,显然后者较为集中,故其标准差小一些,标

『理论』科学计算专项_线性代数几何原理剖析

矩阵左乘向量的两种理解 1,矩阵左乘向量可以理解为对向量进行线性变换 探究原理的话,可以理解左乘为对整个空间(基&目标向量)进行线性变换,其中, 变换矩阵是基'在基的坐标的列向量组合 目标向量是向量在基中的坐标 结果向量是向量'在基下的坐标 就结果来看,实质是利用向量在基下的坐标和基'在基下的坐标,求出整个空间旋转到基'位置后向量的新位置(向量')在原基下的坐标. 详细说明如下: 把基画出来的原因是因为矩阵变换的其实是基. 举例子来看看,比如旋转(旋转矩阵 ): 2.矩阵左乘向量可以理解为单纯的

『Python』MachineLearning机器学习入门_极小的机器学习应用

一个小知识: 有意思的是,scipy囊括了numpy的命名空间,也就是说所有np.func都可以通过sp.func等价调用. 简介: 本部分对一个互联网公司的流量进行拟合处理,学习最基本的机器学习应用. 导入包&路径设置: import os import scipy as sp import matplotlib.pyplot as plt data_dir = os.path.join( os.path.dirname(os.path.realpath(__file__)), "..

『Python』MachineLearning机器学习入门_效率对比

效率对比: 老生常谈了,不过这次用了个新的模块, 运行时间测试模块timeti: 1 import timeit 2 3 normal = timeit.timeit('sum(x*x for x in range(1000))', number=10000) 4 native_np = timeit.timeit('sum(na*na)', # 重复部分 5 setup="import numpy as np; na = np.arange(1000)", # setup只运行一次

『Python』Numpy学习指南第九章_使用Matplotlib绘图

坐标轴调节以及刻度调节参见:『Python』PIL&plt图像处理_矩阵转化&保存图清晰度调整 数据生成: 1 import numpy as np 2 import matplotlib.pyplot as plt 3 4 func = np.poly1d(np.array([1,2,3,4])) 5 func1 = func.deriv(m=1) # 求一阶导数 6 func2 = func.deriv(m=2) # 求二阶导数 7 8 x = np.linspace(-10,10,3

『TensorFlow』函数查询列表_神经网络相关

神经网络(Neural Network) 激活函数(Activation Functions) 操作 描述 tf.nn.relu(features, name=None) 整流函数:max(features, 0) tf.nn.relu6(features, name=None) 以6为阈值的整流函数:min(max(features, 0), 6) tf.nn.elu(features, name=None) elu函数,exp(features) - 1 if < 0,否则featuresE