欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python使用matplotlib創(chuàng)建Gif動圖的思路

 更新時間:2022年04月26日 09:54:49   作者:bashendixie5  
這篇文章主要介紹了Python使用matplotlib創(chuàng)建Gif動圖,我們將討論matplotlib提供的名為“Animation”的動畫庫之一,Python二維繪圖庫是Matplolib可以輕松創(chuàng)建繪圖、直方圖、條形圖、散點圖等,需要的朋友可以參考下

1、Matplotlib 簡介

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

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

但是也有一些缺陷:

Matplotlib的命令式 API,通常過于冗長。

有時糟糕的風格默認值。

對網絡和交互式圖表的支持不佳。

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

2、繪制動畫正弦和余弦波

參考代碼如下

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()
        xlist2.append(xval)
        ylist2.append(func2(xval))
        p2.set_data(xval, func2(xval))

動畫效果圖如下。

3、繪制曲面圖

參考代碼如下,這段代碼會運行一段時間。

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

動畫效果如下 

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

效果圖如下

到此這篇關于Python使用matplotlib創(chuàng)建Gif動圖的文章就介紹到這了,更多相關Python創(chuàng)建Gif動圖內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 詳解Python 實現(xiàn) ZeroMQ 的三種基本工作模式

    詳解Python 實現(xiàn) ZeroMQ 的三種基本工作模式

    ZMQ是一個簡單好用的傳輸層,像框架一樣的一個 socket library,他使得 Socket 編程更加簡單、簡潔和性能更高。 ,這篇文章主要介紹了Python 實現(xiàn) ZeroMQ 的三種基本工作模式,需要的朋友可以參考下
    2020-03-03
  • 兩種方法檢查Python中的變量是否為字符串

    兩種方法檢查Python中的變量是否為字符串

    在 Python 中,每個變量都有一個數(shù)據類型, 數(shù)據類型表示變量內部存儲的數(shù)據類型,本文通過示例介紹兩種不同的方法來檢查 Python 中的變量是否為字符串,感興趣的朋友一起看看吧
    2023-11-11
  • python實現(xiàn)二分類和多分類的ROC曲線教程

    python實現(xiàn)二分類和多分類的ROC曲線教程

    這篇文章主要介紹了python實現(xiàn)二分類和多分類的ROC曲線教程,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-06-06
  • Python之tkinter面板PanedWindow的使用

    Python之tkinter面板PanedWindow的使用

    這篇文章主要介紹了Python之tkinter面板PanedWindow的使用及說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • python解析xml文件實例分析

    python解析xml文件實例分析

    這篇文章主要介紹了python解析xml文件的方法,實例分析了Python針對XML文件節(jié)點及字段的獲取技巧,非常簡單實用,需要的朋友可以參考下
    2015-05-05
  • 在python中按照特定順序訪問字典的方法詳解

    在python中按照特定順序訪問字典的方法詳解

    今天小編就為大家分享一篇在python中按照特定順序訪問字典的方法詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-12-12
  • 使用Python+Flask開發(fā)博客項目并實現(xiàn)內網穿透

    使用Python+Flask開發(fā)博客項目并實現(xiàn)內網穿透

    Flask是一個使用python編寫的輕量級Web框架,這篇文章我們將使用這個框架編寫一個屬于自己的博客網站!并教你如何通過使用內網穿透工具處理項目,讓本地的項目可以在公網訪問,感興趣的可以了解一下
    2021-11-11
  • python實現(xiàn)對doc,txt,xls文檔的讀寫操作

    python實現(xiàn)對doc,txt,xls文檔的讀寫操作

    這篇文章主要介紹了python實現(xiàn)對doc,txt,xls文檔的讀寫操作,正如標題所見,文章包括三個部分python實現(xiàn)對doc文檔的讀取、python實現(xiàn)對txt文檔的讀取和python實現(xiàn)對xls表格的讀取,需要的朋友可以參考一下
    2022-04-04
  • Python3實現(xiàn)打印任意寬度的菱形代碼

    Python3實現(xiàn)打印任意寬度的菱形代碼

    這篇文章主要介紹了Python3實現(xiàn)打印任意寬度的菱形代碼,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-04-04
  • GPU排隊腳本實現(xiàn)空閑觸發(fā)python腳本實現(xiàn)示例

    GPU排隊腳本實現(xiàn)空閑觸發(fā)python腳本實現(xiàn)示例

    有的服務器是多用戶使用,GPU的資源常常被占據著,很可能在夜間GPU空閑了,但來不及運行自己的腳本。如果沒有和別人共享服務器的話,自己的多個程序想排隊使用GPU,也可以用這個腳本
    2021-11-11

最新評論