日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python绘制动画示例_Python使用matplotlib绘制动画的方法

發布時間:2023/12/3 python 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python绘制动画示例_Python使用matplotlib绘制动画的方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本文實例講述了Python使用matplotlib繪制動畫的方法。分享給大家供大家參考。具體分析如下:

matplotlib從1.1.0版本以后就開始支持繪制動畫

下面是幾個的示例:

第一個例子使用generator,每隔兩秒,就運行函數data_gen:

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

希望本文所述對大家的python程序設計有所幫助。

如您對本文有疑問或者有任何想說的,請點擊進行留言回復,萬千網友為您解惑!

總結

以上是生活随笔為你收集整理的python绘制动画示例_Python使用matplotlib绘制动画的方法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。