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

使用matplotlib創(chuàng)建Gif動(dòng)圖的實(shí)現(xiàn)

 更新時(shí)間:2022年04月19日 09:05:35   作者:bashendixie5  
本文主要介紹了使用matplotlib創(chuàng)建Gif動(dòng)圖的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

1、Matplotlib 簡(jiǎn)介

數(shù)據(jù)可視化有助于更有效地講述有關(guān)數(shù)據(jù)的故事并使其易于呈現(xiàn)。有時(shí)很難用靜態(tài)圖表來(lái)解釋數(shù)據(jù)的變化,為此,我們將討論matplotlib提供的名為“Animation”的動(dòng)畫(huà)庫(kù)之一。以下是要涵蓋的主題。

最流行的Python二維繪圖庫(kù)是Matplolib。大多數(shù)人從Matplotlib開(kāi)始他們的探索性數(shù)據(jù)分析之旅。它可以輕松創(chuàng)建繪圖、直方圖、條形圖、散點(diǎn)圖等。與Pandas和Seaborn一樣,它可以創(chuàng)建更復(fù)雜的視覺(jué)效果。

但是也有一些缺陷:

Matplotlib的命令式 API,通常過(guò)于冗長(zhǎng)。

有時(shí)糟糕的風(fēng)格默認(rèn)值。

對(duì)網(wǎng)絡(luò)和交互式圖表的支持不佳。

對(duì)于大型和復(fù)雜的數(shù)據(jù)通常很慢。

2、繪制動(dòng)畫(huà)正弦和余弦波

參考代碼如下

import matplotlib.animation as anime
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
 
fig = plt.figure()
l, = plt.plot([], [], 'k-')
l2, = plt.plot([], [], 'm--')
p1, = plt.plot([], [], 'ko')
p2, = plt.plot([], [], 'mo')
plt.xlabel('xlabel')
plt.ylabel('ylabel')
plt.title('title')
 
plt.xlim(-5, 5)
plt.ylim(-5, 5)
 
 
def func(x):
    return np.sin(x) * 3
 
 
def func2(x):
    return np.cos(x) * 3
 
 
metadata = dict(title="Movie", artist="sourabh")
writer = anime.PillowWriter(fps=15, metadata=metadata)
 
xlist = []
ylist = []
ylist2 = []
xlist2 = []
with writer.saving(fig, "sin+cosinewave.gif", 100):
    for xval in np.linspace(-5, 5, 100):
        xlist.append(xval)
        ylist.append(func(xval))
 
        l.set_data(xlist, ylist)
        l2.set_data(xlist2, ylist2)
 
        p1.set_data(xval, func(xval))
 
        writer.grab_frame()
    for xval in np.linspace(-5, 5, 100):
        xlist2.append(xval)
        ylist2.append(func2(xval))
 
        l.set_data(xlist, ylist)
        l2.set_data(xlist2, ylist2)
 
        p2.set_data(xval, func2(xval))
 
        writer.grab_frame()

動(dòng)畫(huà)效果圖如下。

3、繪制曲面圖

參考代碼如下,這段代碼會(huì)運(yùn)行一段時(shí)間。

import matplotlib
from matplotlib import cm
import matplotlib.animation as anime
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
 
np.random.seed(29680801)
 
fig, ax = plt.subplots(subplot_kw=dict(projection='3d'))
 
plt.xlim(-5, 5)
plt.ylim(-5, 5)
 
metadata = dict(title="Movie", artist="sourabh")
writer = anime.PillowWriter(fps=15, metadata=metadata)
 
def func(x, y, r, t):
    return np.cos(r / 2 + t) * np.exp(-np.square(r) / 50)
 
xdata = np.linspace(-10, 10, 1000)
ydata = np.linspace(-10, 10, 1000)
 
x_list, y_list = np.meshgrid(xdata, ydata)
r_list = np.sqrt(np.square(x_list) + np.square(y_list))
 
with writer.saving(fig, "exp3d.gif", 100):
    for t in np.linspace(0, 20, 160):
        z = func(x_list, y_list, r_list, t)
        ax.set_zlim(-1, 1)
        ax.plot_surface(x_list, y_list, z, cmap=cm.viridis)
        writer.grab_frame()
        plt.cla()
 

動(dòng)畫(huà)效果如下 

 4、繪制回歸圖

參考代碼如下

import matplotlib
from matplotlib import cm
import matplotlib.animation as anime
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
 
np.random.seed(23680545)
 
metadata = dict(title="Movie", artist="sourabh")
writer = anime.PillowWriter(fps=15, metadata=metadata)
 
fig = plt.figure()
plt.xlim(-8, 8)
plt.ylim(-8, 8)
 
 
def func(x):
    return x * 1.2 + 0.1 + np.random.normal(0, 2, x.shape)
 
 
x = np.random.uniform(-7, 7, 10)
x = np.sort(x)
y = func(x)
 
coeff = np.polyfit(x, y, 1)
print(coeff)
xline = np.linspace(-6, 6, 40)
yline = np.polyval(coeff, xline)
 
lPnt, = plt.plot(x, y, 'o')
l, = plt.plot(xline, yline, 'k-', linewidth=3)
 
plt.show()
 
fig = plt.figure()
plt.xlim(-10, 10)
plt.ylim(-10, 10)
 
lPnt, = plt.plot([], [], 'o')
l, = plt.plot([], [], 'k-', linewidth=3)
 
x_List = []
y_List = []
 
x_pnt = []
y_pnt = []
 
with writer.saving(fig, "fitPlot.gif", 100):
    for xval, yval in zip(x, y):
        x_pnt.append(xval)
        y_pnt.append(yval)
 
        lPnt.set_data(x_pnt, y_pnt)
        l.set_data(x_List, y_List)
 
        writer.grab_frame()
        writer.grab_frame()
 
    for x_val, y_val in zip(xline, xline):
        x_List.append(x_val)
        y_List.append(y_val)
 
        lPnt.set_data(x_pnt, y_pnt)
        l.set_data(x_List, y_List)
 
        writer.grab_frame()
 
    for i in range(10):
        writer.grab_frame()

效果圖如下

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

相關(guān)文章

最新評(píng)論