首页 > 代码库 > matplotlib简易新手教程及动画

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 = http://www.mamicode.com/[], []  >
最后一个:

# -*- 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 = http://www.mamicode.com/np.random.rand(2, 15)  >




matplotlib简易新手教程及动画