最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Matplotlib繪圖基礎(chǔ)之動(dòng)畫(huà)繪制詳解

 更新時(shí)間:2023年08月09日 09:46:27   作者:databook  
matplotlib的動(dòng)畫(huà)一直是一個(gè)強(qiáng)大但使用頻率不高的功能,通過(guò)動(dòng)畫(huà)來(lái)展示數(shù)據(jù)和模型的變化過(guò)程,可使數(shù)據(jù)的可視化更加生動(dòng)形象,下面就跟隨小編一起學(xué)習(xí)一下Matplotlib是如何繪制動(dòng)畫(huà)的吧

matplotlib動(dòng)畫(huà)一直是一個(gè)強(qiáng)大但使用頻率不高的功能,究其原因,一方面展示動(dòng)畫(huà)需要一定的媒介,沒(méi)有圖形和文字展示方便;二來(lái)大家更關(guān)心的是分析結(jié)果的最終圖表,圖表的動(dòng)態(tài)展示則沒(méi)有那么重要。

不過(guò),隨著短視頻的興起,在短視頻平臺(tái)上展示動(dòng)畫(huà)變得非常容易,所以,我們發(fā)現(xiàn)有越來(lái)越多的數(shù)據(jù)分析動(dòng)畫(huà)(比如各種橫向條形圖的排名等等)出現(xiàn)在了短視頻平臺(tái)上。

通過(guò)動(dòng)畫(huà)來(lái)展示數(shù)據(jù)和模型的變化過(guò)程,可使數(shù)據(jù)的可視化更加生動(dòng)形象,隨著各種平臺(tái)的興起,matplotlib的動(dòng)畫(huà)功能也因此有了更多的用武之地。

1. 動(dòng)畫(huà)示例

介紹matplotlib的動(dòng)畫(huà)功能之前,先看用matplotlib制作的兩個(gè)簡(jiǎn)單的的動(dòng)畫(huà)示例。

1.1. 單個(gè)動(dòng)畫(huà)

首先是單個(gè)動(dòng)畫(huà),繪制一個(gè)正弦曲線。

import numpy as np
import matplotlib
import matplotlib.pyplot as plt
import matplotlib.animation as animation
x = np.linspace(-8, 8, 100)
y = np.sin(x)
fig, ax = plt.subplots()
(g,) = ax.plot(x, y)
def update(frame):
    y = np.sin(x[:frame])
    g.set_data(x[:frame], y)
animation.FuncAnimation(fig, update, interval=50, frames=len(x))

1.2. 組合動(dòng)畫(huà)

除了單個(gè)動(dòng)畫(huà)之外,組合動(dòng)畫(huà)也簡(jiǎn)單,下面的示例中,先繪制一個(gè)正弦曲線,然后一個(gè)點(diǎn)沿著曲線運(yùn)動(dòng),隨著這個(gè)點(diǎn),繪制正弦曲線的切線。

x = np.linspace(-8, 8, 100)
f = lambda x: np.sin(x / 2)
fig, ax = plt.subplots()
fig.set_size_inches(8, 4)
ax.plot(x, f(x), 'lightblue')
(point,) = ax.plot(x[0], f(x[0]), "r", alpha=0.4, marker="o")
(line,) = ax.plot([0], [0], "g", linewidth=3)
#繪制切線
def tangent_line(x0, y0):
    h = 1e-4
    num_min = f(x0 - h)
    num_max = f(x0 + h)
    k = (num_max - num_min) / (2 * h)
    xs = np.linspace(x0 - 0.5, x0 + 0.5, 100)
    ys = y0 + k * (xs - x0)
    return xs, ys
#移動(dòng)切點(diǎn)
def move_point(frame):
    point.set_data([x[frame]], [f(x[frame])])
    xs, ys = tangent_line(x[frame], f(x[frame]))
    line.set_data(xs, ys)
animation.FuncAnimation(fig, move_point, interval=50, frames=len(x))

2. 動(dòng)畫(huà)函數(shù)

matplotlib的動(dòng)畫(huà)函數(shù)主要有兩種,它們的動(dòng)畫(huà)原理差別很大,了解它們之間的區(qū)別,才能根據(jù)自己的場(chǎng)景選擇合適的動(dòng)畫(huà)函數(shù)。

2.1. FuncAnimation

上一節(jié)的示例中使用的就是FuncAnimation,它的動(dòng)畫(huà)原理是通過(guò)回調(diào)函數(shù),不斷重繪圖形,已達(dá)到動(dòng)畫(huà)的效果。
主要的參數(shù)有:

  • 畫(huà)布:比如上面第一個(gè)示例中的 fig
  • 回調(diào)函數(shù):比如上面第一個(gè)示例中的 update
  • 調(diào)用回調(diào)函數(shù)的間隔:比如上面第一個(gè)示例中的 interval=50,單位是毫秒
  • 調(diào)用回調(diào)函數(shù)的次數(shù):比如上面第一個(gè)示例中的 frames=len(x)

簡(jiǎn)單來(lái)說(shuō),也就是FuncAnimation函數(shù)每隔interval毫秒,調(diào)用一次update,一共調(diào)用frames次。

2.2. ArtistAnimation

ArtistAnimation函數(shù)的原理則是先準(zhǔn)備好每一幀的數(shù)據(jù),然后繪制按照一定的時(shí)間間隔,繪制每一幀數(shù)據(jù)對(duì)應(yīng)的圖像。

比如上面的示例一樣的正弦曲線,用ArtistAnimation函數(shù)繪制的話(huà):

points = np.linspace(-8, 8, 100)
fig, ax = plt.subplots()
frames = []
for i in range(50):
    x = points[:i]
    y = np.sin(x)
    g = ax.plot(x, y)
    frames.append(g)
animation.ArtistAnimation(fig, frames, interval=50)

ArtistAnimation的主要參數(shù):

  • 畫(huà)布:比如上面示例中的 fig
  • 每一幀的數(shù)據(jù):比如上面示例中的 frames
  • 每一幀的間隔:比如上面示例中的 interval=50,單位是毫秒

ArtistAnimation沒(méi)有回調(diào)函數(shù),只要準(zhǔn)備好每一幀的數(shù)據(jù),它會(huì)按照時(shí)間間隔繪制每一幀的數(shù)據(jù)。

3. 動(dòng)畫(huà)導(dǎo)出

最后,是動(dòng)畫(huà)的導(dǎo)出,常用的兩種格式是MP4GIF
如果安裝了 ffmpeg,那么導(dǎo)出這兩種格式就很簡(jiǎn)單了。

3.1. 導(dǎo)出mp4

#前面部分省略。。。
anim = animation.FuncAnimation(fig, update, interval=50, frames=len(x))
anim.save("./output.mp4", writer='ffmpeg')

導(dǎo)出的文件名后綴 mp4,則可以導(dǎo)出視頻。

這里的writer參數(shù)用ffmpeg。

3.2. 導(dǎo)出GIF

同樣,導(dǎo)出gif也一樣,文件名的后綴 gif即可。

#前面部分省略。。。
anim = animation.FuncAnimation(fig, update, interval=50, frames=len(x))
anim.save("./output.gif", writer='ffmpeg')

當(dāng)然,也可以不用ffmpeg,比如,如果安裝了imagemagick,這里的writer也可以用imagemagick。

#前面部分省略。。。
anim = animation.FuncAnimation(fig, update, interval=50, frames=len(x))
anim.save("./output.gif", writer='imagemagick')

以上就是Matplotlib繪圖基礎(chǔ)之動(dòng)畫(huà)繪制詳解的詳細(xì)內(nèi)容,更多關(guān)于Matplotlib動(dòng)畫(huà)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • python爬蟲(chóng)http代理使用方法

    python爬蟲(chóng)http代理使用方法

    在本篇文章里小編給大家整理的是一篇關(guān)于python爬蟲(chóng)http代理使用方法相關(guān)內(nèi)容,有需要的朋友們可以跟著學(xué)習(xí)參考下。
    2021-09-09
  • python根據(jù)json數(shù)據(jù)畫(huà)疫情分布地圖的詳細(xì)代碼

    python根據(jù)json數(shù)據(jù)畫(huà)疫情分布地圖的詳細(xì)代碼

    這篇文章主要介紹了python根據(jù)json數(shù)據(jù)畫(huà)疫情分布地圖的詳細(xì)代碼,掌握使用pyecharts構(gòu)建基礎(chǔ)的全國(guó)地圖可視化圖表,本文結(jié)合示例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2022-12-12
  • python實(shí)現(xiàn)電子書(shū)翻頁(yè)小程序

    python實(shí)現(xiàn)電子書(shū)翻頁(yè)小程序

    這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)電子書(shū)翻頁(yè)小程序,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-07-07
  • Python?虛擬環(huán)境遷移到其他電腦的實(shí)現(xiàn)

    Python?虛擬環(huán)境遷移到其他電腦的實(shí)現(xiàn)

    本文主要介紹了Python?虛擬環(huán)境遷移到其他電腦的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04
  • Python 多線程實(shí)例詳解

    Python 多線程實(shí)例詳解

    這篇文章主要介紹了Python 多線程實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下
    2017-03-03
  • python求平均值多種方法代碼示例

    python求平均值多種方法代碼示例

    要求一個(gè)列表中的數(shù)的平均值,我們可以使用Python來(lái)實(shí)現(xiàn),這篇文章主要給大家介紹了關(guān)于python求平均值多種方法的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-11-11
  • python的paramiko模塊基本用法詳解

    python的paramiko模塊基本用法詳解

    paramiko 是一個(gè)用于在Python中執(zhí)行遠(yuǎn)程操作的模塊,支持SSH協(xié)議,它可以用于連接到遠(yuǎn)程服務(wù)器,執(zhí)行命令、上傳和下載文件,以及在遠(yuǎn)程服務(wù)器上執(zhí)行各種操作,這篇文章主要介紹了python的paramiko模塊基本用法,需要的朋友可以參考下
    2023-08-08
  • 在Python3中使用asyncio庫(kù)進(jìn)行快速數(shù)據(jù)抓取的教程

    在Python3中使用asyncio庫(kù)進(jìn)行快速數(shù)據(jù)抓取的教程

    這篇文章主要介紹了在Python3中使用asyncio進(jìn)行快速數(shù)據(jù)抓取,asyncio是一個(gè)異步IO庫(kù),運(yùn)行效率較高,需要的朋友可以參考下
    2015-04-04
  • python計(jì)算文本文件行數(shù)的方法

    python計(jì)算文本文件行數(shù)的方法

    這篇文章主要介紹了python計(jì)算文本文件行數(shù)的方法,涉及Python針對(duì)文本文件的讀取與行數(shù)統(tǒng)計(jì)相關(guān)技巧,需要的朋友可以參考下
    2015-07-07
  • 三大Python翻譯神器再也不用擔(dān)心學(xué)不好英語(yǔ)

    三大Python翻譯神器再也不用擔(dān)心學(xué)不好英語(yǔ)

    本文介紹了用python做一款屬于自己的翻譯詞典軟件,從此告別網(wǎng)頁(yè)搜索,文中有非常詳細(xì)的代碼示例,小伙伴們快快行動(dòng)吧,需要的朋友可以參考下
    2021-09-09

最新評(píng)論

天镇县| 内黄县| 色达县| 衡南县| 鸡泽县| 隆回县| 肇州县| 肇庆市| 集安市| 防城港市| 襄城县| 乐都县| 文水县| 翼城县| 枝江市| 收藏| 勃利县| 衡阳市| 长寿区| 隆昌县| 科尔| 迁西县| 平乡县| 濉溪县| 清流县| 昆山市| 固原市| 读书| 潼关县| 翼城县| 八宿县| 青海省| 任丘市| 靖远县| 富顺县| 太和县| 黎平县| 铁岭市| 民县| 齐齐哈尔市| 长海县|