亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Python實(shí)現(xiàn)動(dòng)態(tài)繪圖的示例詳解

 更新時(shí)間:2023年05月07日 09:13:15   作者:微小冷  
matplotlib中的animation提供了動(dòng)態(tài)繪圖功能,這篇文章主要為大家詳細(xì)介紹了Python如何利用matplotlib實(shí)現(xiàn)動(dòng)態(tài)繪圖,感興趣的可以了解一下

示例

matplotlib中的animation提供了動(dòng)態(tài)繪圖功能,下面列舉一個(gè)最簡(jiǎn)單的動(dòng)態(tài)繪制三角函數(shù)的例子,來初步演示一下。

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

fig, ax = plt.subplots(figsize=(5,3))
line, = ax.plot([], [], lw=1)
ax.grid()

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

def animate(N):
    x = np.arange(N)/10
    y = np.sin(x)
    line.set_data(x, y)
    return line,

ani = animation.FuncAnimation(fig, animate, range(100), init_func=init, interval=40)
ani.save("ani_test_0.gif")
plt.show()

效果如下

其中,fig, ax為繪圖窗口和坐標(biāo)軸,這是在任何繪圖操作中都涉及到的元素,但在本例中的動(dòng)態(tài)繪圖操作中,ax是以一種"全局變量"的形式存在的,將在后米娜的initanimate函數(shù)中被直接調(diào)用。

line即為繪制在ax之上的曲線,由于ax.plot默認(rèn)返回一個(gè)曲線列表,通過line,=這樣的方法,可以提取出曲線列表中的第0條曲線,其結(jié)果等價(jià)于

line = ax.plot([], [], lw=1)[0]

接下來init函數(shù)用于繪圖曲線的初始化,animate用于調(diào)整繪圖函數(shù)的動(dòng)態(tài)變化,其輸入N暫時(shí)可以簡(jiǎn)單地理解為第N張圖像的曲線。

接下來,就是動(dòng)態(tài)繪圖的核心對(duì)象FuncAnimation。

FuncAnimation

FuncAnimation是一個(gè)類,其構(gòu)造函數(shù)為

FuncAnimation(fig, func, frames=None, init_func=None, fargs=None, save_count=None, *, cache_frame_data=True, **kwargs)

前面的4個(gè)參數(shù)在示例程序中已經(jīng)用到,fig為繪圖窗口;func為圖像更新函數(shù);frames為繪圖幀號(hào);init_func為圖像的初始化函數(shù)。

其繪圖邏輯寫成偽代碼類似于

for n in frames:
    if n>0:
        draw(func(n))
    else:
        draw(init(n))    

如果frames是一個(gè)整數(shù),則在調(diào)用時(shí)會(huì)自動(dòng)轉(zhuǎn)為range(frames)。

而用于繪圖的主要對(duì)象,就是坐標(biāo)軸ax,故而在示例中的animate以及init函數(shù)的返回對(duì)象是line,,當(dāng)然也可以寫成return [line]。

FuncAnimation中的其他參數(shù)含義如下:

  • fargs 為繪圖函數(shù)func的其他輸入?yún)?shù)
  • save_count 緩存幀數(shù)
  • interval 幀延時(shí),默認(rèn)200毫秒,幀率25fps對(duì)應(yīng)40毫秒。
  • repeat_delay 重復(fù)延時(shí),單位是微秒
  • repeat 為False時(shí),動(dòng)畫將只演示一遍。

三維情況

三維情況的動(dòng)圖繪制函數(shù),機(jī)理與二維是相同的,下面引用官方畫廊中的示例,來演示一下三維動(dòng)圖的繪制流程,首先生成一組隨機(jī)行走的曲線

np.random.seed(19680801)        # 隨機(jī)數(shù)種子,便于復(fù)現(xiàn)

def random_walk(N, L=0.05):
    st = np.random.random(3)
    steps = np.random.uniform(-L, L, size=(N, 3))
    walk = st + np.cumsum(steps, axis=0)
    return walk

walks = [random_walk(30) for index in range(40)]

random_walk可生成一條隨機(jī)行走的三維曲線,walks通過調(diào)用這個(gè)函數(shù),共生成了40條曲線,下面就是對(duì)這40條曲線的調(diào)用

def animate(num, walks, lines):
    for line, walk in zip(lines, walks):
        line.set_data(walk[:num, :2].T)
        line.set_3d_properties(walk[:num, 2])
    return lines

fig = plt.figure(figsize=(5,4))
ax = fig.add_subplot(projection="3d")

lines = [ax.plot([], [], [], lw=1)[0] for _ in walks]

ax.set(xlim3d=(0, 1), xlabel='X')
ax.set(ylim3d=(0, 1), ylabel='Y')
ax.set(zlim3d=(0, 1), zlabel='Z')

ani = animation.FuncAnimation(
    fig, animate, 30, fargs=(walks, lines), interval=100)

plt.show()

效果如下

到此這篇關(guān)于Python實(shí)現(xiàn)動(dòng)態(tài)繪圖的示例詳解的文章就介紹到這了,更多相關(guān)Python動(dòng)態(tài)繪圖內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 使用Django搭建一個(gè)基金模擬交易系統(tǒng)教程

    使用Django搭建一個(gè)基金模擬交易系統(tǒng)教程

    今天小編就為大家分享一篇使用Django搭建一個(gè)基金模擬交易系統(tǒng)教程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-11-11
  • Python 圖片文字識(shí)別的實(shí)現(xiàn)之PaddleOCR

    Python 圖片文字識(shí)別的實(shí)現(xiàn)之PaddleOCR

    OCR方向的工程師,之前一定聽說過PaddleOCR這個(gè)項(xiàng)目,其主要推薦的PP-OCR算法更是被國(guó)內(nèi)外企業(yè)開發(fā)者廣泛應(yīng)用,短短半年時(shí)間,累計(jì)Star數(shù)量已超過15k,頻頻登上Github Trending和Paperswithcode 日榜月榜第一
    2021-11-11
  • Python cookbook(數(shù)據(jù)結(jié)構(gòu)與算法)讓字典保持有序的方法

    Python cookbook(數(shù)據(jù)結(jié)構(gòu)與算法)讓字典保持有序的方法

    這篇文章主要介紹了Python讓字典保持有序的方法,涉及Python基于collections模塊中的OrderedDict類實(shí)現(xiàn)控制字典順序的相關(guān)操作技巧,需要的朋友可以參考下
    2018-02-02
  • Python后臺(tái)開發(fā)Django的教程詳解(啟動(dòng))

    Python后臺(tái)開發(fā)Django的教程詳解(啟動(dòng))

    這篇文章主要介紹了Python后臺(tái)開發(fā)Django(啟動(dòng)),本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值 ,需要的朋友可以參考下
    2019-04-04
  • 詳解pygame中Rect對(duì)象

    詳解pygame中Rect對(duì)象

    Rect是pygame中的一個(gè)創(chuàng)建矩形的對(duì)象,它包含一些屬性主要是兩塊:坐標(biāo)和長(zhǎng)寬,Pygame?通過?Rect?對(duì)象存儲(chǔ)和操作矩形區(qū)域,這篇文章主要介紹了pygame中Rect對(duì)象,需要的朋友可以參考下
    2022-07-07
  • Django+uni-app實(shí)現(xiàn)數(shù)據(jù)通信中的請(qǐng)求跨域的示例代碼

    Django+uni-app實(shí)現(xiàn)數(shù)據(jù)通信中的請(qǐng)求跨域的示例代碼

    這篇文章主要介紹了Django+uni-app實(shí)現(xiàn)數(shù)據(jù)通信中的請(qǐng)求跨域的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-10-10
  • Python演化計(jì)算基準(zhǔn)函數(shù)詳解

    Python演化計(jì)算基準(zhǔn)函數(shù)詳解

    這篇文章主要介紹了Python演化計(jì)算基準(zhǔn)函數(shù),非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友參考下吧,希望能夠給你帶來幫助
    2021-10-10
  • python基礎(chǔ)教程之自定義函數(shù)介紹

    python基礎(chǔ)教程之自定義函數(shù)介紹

    這篇文章主要介紹了python基礎(chǔ)教程之自定義函數(shù)介紹,本文講解了python中函數(shù)的定義方法、函數(shù)參數(shù)的定義方法,需要的朋友可以參考下
    2014-08-08
  • python中id函數(shù)運(yùn)行方式

    python中id函數(shù)運(yùn)行方式

    在本篇文章里小編給大家分享了關(guān)于python中id函數(shù)運(yùn)行方式及相關(guān)實(shí)例,需要的朋友們可以參考下。
    2020-07-07
  • django-celery-beat搭建定時(shí)任務(wù)的實(shí)現(xiàn)

    django-celery-beat搭建定時(shí)任務(wù)的實(shí)現(xiàn)

    本文主要介紹了django-celery-beat搭建定時(shí)任務(wù)的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03

最新評(píng)論