matplotlib简易新手教程及动画

做数据分析,首先是要熟悉和理解数据。所以掌握一个趁手的可视化工具是很重要的,否则对数据连个主要的感性认识都没有,怎样进行下一步的design

点击打开链接

还有一个非常棒的资料  Matplotlib Tutorial(译)

使用python绘制动态图的四个栗子:

# -*- coding: utf-8 -*-    

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

fig = plt.figure()
axes1 = fig.add_subplot(111)
line, = axes1.plot(np.random.rand(10))  

#由于update的參数是调用函数data_gen,所以第一个默认參数不能是framenum
def update(data):
    line.set_ydata(data)
    return line,
# 每次生成10个随机数据
def data_gen():
    while True:
        yield np.random.rand(10)  

ani = animation.FuncAnimation(fig, update, data_gen, interval=2*1000)
plt.show()

第二个样例使用list(metric),每次从metric中取一行数据作为參数送入update中:

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

start = [1, 0.18, 0.63, 0.29, 0.03, 0.24, 0.86, 0.07, 0.58, 0]  

metric =[[0.03, 0.86, 0.65, 0.34, 0.34, 0.02, 0.22, 0.74, 0.66, 0.65],
         [0.43, 0.18, 0.63, 0.29, 0.03, 0.24, 0.86, 0.07, 0.58, 0.55],
         [0.66, 0.75, 0.01, 0.94, 0.72, 0.77, 0.20, 0.66, 0.81, 0.52]
        ]  

fig = plt.figure()
window = fig.add_subplot(111)
line, = window.plot(start)
#假设是參数是list,则默认每次取list中的一个元素,即metric[0],metric[1],...
def update(data):
    line.set_ydata(data)
    return line,  

ani = animation.FuncAnimation(fig, update, metric, interval=2*1000)
plt.show()

第三个样例:

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

# 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)  

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

# animation function.  This is called sequentially
# note: i is framenumber
def animate(i):
    x = np.linspace(0, 2, 1000)
    y = np.sin(2 * np.pi * (x - 0.01 * i))
    line.set_data(x, y)
    return line,  

# call the animator.  blit=True means only re-draw the parts that have changed.
anim = animation.FuncAnimation(fig, animate, init_func=init,
                               frames=200, interval=20, blit=True)  

#anim.save('basic_animation.mp4', fps=30, extra_args=['-vcodec', 'libx264'])   

plt.show()

第四个样例:

# -*- coding: utf-8 -*-   

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

# 每次产生一个新的坐标点
def data_gen():
    t = data_gen.t
    cnt = 0
    while cnt < 1000:
        cnt+=1
        t += 0.05
        yield t, np.sin(2*np.pi*t) * np.exp(-t/10.)
data_gen.t = 0  

# 画图
fig, ax = plt.subplots()
line, = ax.plot([], [], lw=2)
ax.set_ylim(-1.1, 1.1)
ax.set_xlim(0, 5)
ax.grid()
xdata, ydata = [], []  

# 由于run的參数是调用函数data_gen,所以第一个參数能够不是framenum:设置line的数据,返回line
def run(data):
    # update the data
    t,y = data
    xdata.append(t)
    ydata.append(y)
    xmin, xmax = ax.get_xlim()  

    if t >= xmax:
        ax.set_xlim(xmin, 2*xmax)
        ax.figure.canvas.draw()
    line.set_data(xdata, ydata)  

    return line,  

# 每隔10秒调用函数run,run的參数为函数data_gen,
# 表示图形仅仅更新须要绘制的元素
ani = animation.FuncAnimation(fig, run, data_gen, blit=True, interval=10,
    repeat=False)
plt.show()

最后一个:

# -*- coding: utf-8 -*-
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation  

#第一个參数必须为framenum
def update_line(num, data, line):
    line.set_data(data[...,:num])
    return line,  

fig1 = plt.figure()  

data = np.random.rand(2, 15)
l, = plt.plot([], [], 'r-')
plt.xlim(0, 1)
plt.ylim(0, 1)
plt.xlabel('x')
plt.title('test')  

#framenum从1添加大25后,返回再次从1添加到25,再返回...
line_ani = animation.FuncAnimation(fig1, update_line, 25,fargs=(data, l),interval=50, blit=True)  

#等同于
#line_ani = animation.FuncAnimation(fig1, update_line, frames=25,fargs=(data, l),
#    interval=50, blit=True)   

#忽略frames參数,framenum会从1一直添加下去知道无穷
#因为frame达到25以后,数据不再改变,所以你会发现到达25以后图形不再变化了
#line_ani = animation.FuncAnimation(fig1, update_line, fargs=(data, l),
#    interval=50, blit=True)   

plt.show()
时间: 2024-12-15 16:14:53

matplotlib简易新手教程及动画的相关文章

matplotlib简单的新手教程和动画

做数据分析,首先是要熟悉和理解数据,所以掌握一个趁手的可视化工具是很重要的,否则对数据连个主要的感性认识都没有,怎样进行下一步的design 点击打开链接 还有一个非常棒的资料  Matplotlib Tutorial(译) 使用python绘制动态图的四个栗子: # -*- coding: utf-8 -*- import numpy as np import matplotlib.pyplot as plt import matplotlib.animation as animation f

matplotlib简易入门教程

做数据分析,首先是要熟悉和理解数据,所以掌握一个趁手的可视化工具是非常重要的,否则对数据连个基本的感性认识都没有,如何进行下一步的design Getting Started with Matplotlib 先看个简单的例子,plot,即画线 画线,需要给出线上的点的坐标,然后Matplotlib会自动将点连成线 In [2]: x = range(6) In [3]: plt.plot(x, [xi**2 for xi in x]) 可以看到plot的参数是两个list,分布表示x轴和y轴的坐

A-Frame WebVR开发新手教程

WebVR和WebGL应用程序接口使得我们已经能够在浏览器上创建虚拟现实(VR)体验.但从project化的角度而言,开发社区还须要很多其它方便强大的开发库来简化编程.Mozilla的 A-Frame 框架就是这样一个工具.提供了一个Web开发人员所熟悉的标记语言来高速构建3D VR场景动画原型.而不须要编写过多的JavaScript和GLSL语句. 本文将介绍怎样使用A-Frame构建一个简单的在线可执行实例.你能够先看下在线演示效果. 參考文档:A-Frame中文文档开发指南在线教程 概览

妄想性仮想人格障害 新手教程 +改动器

记得上次 HM 教程以后 我如今 继续写 Teatime 新作新手教程 首先我说下 此游戏 模式 =AI2+机械迷城 一共同拥有5关,结局从文本分析应该至少有两个 本文不是教你怎么玩通结局 安装没什么说的,APP就能够还不明确的上网找找教程 进入游戏后 首先要注意 上面的时间,一个是MM 生命 另外一个则是 过关时间 显然 MM生命结束,就Gameover 过关时间到,会出现电话亭 给你 存档+ 过关. 假设你连AI2 或者HM都没有玩过 就从这里: boy 操控靠鼠标控制,双击则是跑步 走过去

Apple Swift编程语言新手教程

Apple Swift编程语言新手教程 作者: 日期: gashero 2014-06-03 FROM:http://gashero.iteye.com/blog/2075324 文件夹 1   简单介绍 2   Swift入门 3   简单值 4   控制流 5   函数与闭包 6   对象与类 7   枚举与结构 1   简单介绍 今天凌晨Apple刚刚公布了Swift编程语言,本文从其公布的书籍<The Swift Programming Language>中摘录和提取而成.希望对各位的

【OpenCV十六新手教程】OpenCV角检测Harris角点检测

本系列文章由@浅墨_毛星云 出品.转载请注明出处. 文章链接:http://blog.csdn.net/poem_qianmo/article/details/29356187 作者:毛星云(浅墨)    微博:http://weibo.com/u/1723155442 知乎:http://www.zhihu.com/people/mao-xing-yun 邮箱: [email protected] 写作当前博文时配套使用的OpenCV版本号: 2.4.9 本篇文章中,我们一起探讨了OpenCV

MATLAB新手教程

MATLAB新手教程   1.MATLAB的基本知识 1-1.基本运算与函数    在MATLAB下进行基本数学运算,仅仅需将运算式直接打入提示号(>>)之後,并按入Enter键就可以.比如: >> (5*2+1.3-0.8)*10/25 ans =4.2000 MATLAB会将运算结果直接存入一变数ans,代表MATLAB运算後的答案(Answer)并显示其数值於萤幕上. 小提示: ">>"是MATLAB的提示符号(Prompt),但在PC中文视窗

ionic新手教程第七课-简要说明几种界面之间的參数传递及优缺点

截至2016年4月13日19点32分,我公布的ionic新手教程,已经公布6课了, 总訪问量将近6000,平均每节课能有1000的訪问量.当中訪客最多的是第三课有2700的訪客. watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" > 事实上我開始的时候计划的挺好的,就依照我这阶段的安排,慢慢的带大家做一个

Web压力测试工具 LoadRunner12.x简易入门教程--(一)回放与录制

LoadRunner12.x简易入门教程--(一)回放与录制 今天在这里分享一下LoadRunner12.x版本的入门使用方法,希望对刚接触LoadRunner的童鞋有所帮助. LoadRunner12的组成分为三部分,分别是:Virtual User Generator.Controller.Analysis 首先要介绍的是用Virtual User Generator做一个最简单的录制与回放. 打开软件后,界面如下,通过左上角的菜单,我们来新建一个脚本 由于现在Web项目比较多,这里也就用W