使用matplotlib创建Gif动图的实现

目录
  • 1、Matplotlib 简介
  • 2、绘制动画正弦和余弦波
  • 3、绘制曲面图
  • 4、绘制回归图

1、Matplotlib 简介

数据可视化有助于更有效地讲述有关数据的故事并使其易于呈现。有时很难用静态图表来解释数据的变化,为此,我们将讨论matplotlib提供的名为“Animation”的动画库之一。以下是要涵盖的主题。

最流行的Python二维绘图库是Matplolib。大多数人从Matplotlib开始他们的探索性数据分析之旅。它可以轻松创建绘图、直方图、条形图、散点图等。与Pandas和Seaborn一样,它可以创建更复杂的视觉效果。

但是也有一些缺陷:

Matplotlib的命令式 API,通常过于冗长。

有时糟糕的风格默认值。

对网络和交互式图表的支持不佳。

对于大型和复杂的数据通常很慢。

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

动画效果图如下。

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

效果图如下

到此这篇关于使用matplotlib创建Gif动图的实现的文章就介绍到这了,更多相关matplotlib创建Gif动图内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 如何利用Matplotlib库绘制动画及保存GIF图片

    前言 在自学机器学习或者是深度学习的过程中,有的时候总想把执行过程或者执行结果显示出来,所以就想到了动画.好在用 Python 实现动画有许多中方式,而大家熟知的 Matplotlib 库就可以实现. 本文的目的是对 Matplotlib 的动画实现手段做一个简单的说明. 绘制动画 import matplotlib.pyplot as plt import matplotlib.animation as animation 如果要让 matplotlib 实现动画功能的话,那么就要引入 ani

  • 使用matplotlib创建Gif动图的实现

    目录 1.Matplotlib 简介 2.绘制动画正弦和余弦波 3.绘制曲面图 4.绘制回归图 1.Matplotlib 简介 数据可视化有助于更有效地讲述有关数据的故事并使其易于呈现.有时很难用静态图表来解释数据的变化,为此,我们将讨论matplotlib提供的名为“Animation”的动画库之一.以下是要涵盖的主题. 最流行的Python二维绘图库是Matplolib.大多数人从Matplotlib开始他们的探索性数据分析之旅.它可以轻松创建绘图.直方图.条形图.散点图等.与Pandas和

  • Python使用matplotlib创建Gif动图

    目录 1.Matplotlib 简介 2.绘制动画正弦和余弦波 3.绘制曲面图 4.绘制回归图 1.Matplotlib 简介 数据可视化有助于更有效地讲述有关数据的故事并使其易于呈现.有时很难用静态图表来解释数据的变化,为此,我们将讨论matplotlib提供的名为“Animation”的动画库之一.以下是要涵盖的主题. 最流行的Python二维绘图库是Matplolib.大多数人从Matplotlib开始他们的探索性数据分析之旅.它可以轻松创建绘图.直方图.条形图.散点图等.与Pandas和

  • R语言使用gganimate创建可视化动图

    目录 前言 加载R包,数据 ggplot2绘制 gganimate 动态 参考资料 前言 介绍一个主要用于绘制动画的ggplot2的扩展包---gganimate包. Hans Rosling的关于“New Insights on Poverty”的TED演讲绝对是对我影响最大的几个TED之一,原来数据可以这样展示,,,可视化可以这样炫,,,故事可以这样讲... 下面尝试使用 gganimate 包和 gapminder 数据集,实现类似可视化过程. 加载R包,数据 #R包安装 install.

  • Python Matplotlib绘制动图平滑曲线

    目录 绘制动图 FuncAnimation ArtistAnimation 使用 scipy.ndimage.gaussian_filter1d() 高斯核类绘制平滑曲线 使用 scipy.interpolate.make_interp_spline() 样条插值类绘制平滑曲线 使用 scipy.interpolate.interp1d 插值类绘制平滑曲线 拟合曲线后绘制动图 绘制动图 FuncAnimation,它的使用要求简洁且定制化程度较高.如果想将很多图片合并为一个动图,那么Artist

  • Python数据可视化编程通过Matplotlib创建散点图代码示例

    Matplotlib简述: Matplotlib是一个用于创建出高质量图表的桌面绘图包(主要是2D方面).该项目是由JohnHunter于2002年启动的,其目的是为Python构建一个MATLAB式的绘图接口.如果结合PythonIDE使用比如PyCharm,matplotlib还具有诸如缩放和平移等交互功能.它不仅支持各种操作系统上许多不同的GUI后端,而且还能将图片导出为各种常见的矢量(vector)和光栅(raster)图:PDF.SVG.JPG.PNG.BMP.GIF等.此外,matp

  • Java 给图片和动图添加水印的方法

    这两天根据需求在做图片上传添加水印,实话说重来不知道java还可以这样操作,既然有个这要求我就去找资料研究了一番,现在把它分享一下,希望能帮到有需要的兄弟. 给普通图片添加水印和给动图添加水印是不一样的,给普通图片添加水印用的是java自带的方法写的,给动图使用了gif4j框架,这个框架在CSDN里面很多可以下载,建议下载破解版的,因为原来的jar包会有自带的一个水印是去不了的. import java.awt.*; import java.awt.image.BufferedImage; im

  • 利用Python如何制作好玩的GIF动图详解

    前言 之前我们分享过用Python进行可视化的9种常见方式.其实我们还能让可视化图形逼格更高一些,今天就分享一下如何让可视化秀起来:用Python和matplotlib制作GIF图表. 假如电脑上没有安装ImageMagick,先去这里按照自己的电脑系统下载对应版本,大家也可以通过我们下载:https://www.jb51.net/softs/140766.html,如果我们想用matplotlib的save方法渲染GIF动图,就需要安装ImageMagick. 下图是我们制作的一个动图示例:

  • 利用PyQt5+Matplotlib 绘制静态/动态图的实现代码

    代码编辑环境 Win10+(Pycharmm or Vscode)+PyQt 5.14.2 功能实现 静态作图:数据作图,取决于作图函数,可自行修改 动态作图:产生数据,获取并更新数据,最后刷新显示,可用于实现数据实时采集并显示的场景 效果展示 代码块(业务与逻辑分离)业务–UI界面代码 文件名:Ui_realtimer_plot.py # -*- coding: utf-8 -*- # Added by the Blog author VERtiCaL on 2020/07/12 at SSR

  • python如何用matplotlib创建三维图表

    Matplotlib 最开始被设计为仅支持二维的图表.到 1.0 版本发布左右,一些三维图表的工具在二维展示的基础上被创建了出来,结果就是 Matplotlib 提供了一个方便的(同时也是有限的)的可用于三维数据可视化的一套工具.三维图表可以使用载入mplot3d工具包来激活,这个包会随着 Matplotlib 自动安装: from mpl_toolkits import mplot3d 一旦模块被导入,三维 axes 就可以像其他普通 axes 一样通过关键字参数projection='3d'

  • Python实现K-means聚类算法并可视化生成动图步骤详解

    K-means算法介绍 简单来说,K-means算法是一种无监督算法,不需要事先对数据集打上标签,即ground-truth,也可以对数据集进行分类,并且可以指定类别数目 牧师-村民模型 K-means 有一个著名的解释:牧师-村民模型: 有四个牧师去郊区布道,一开始牧师们随意选了几个布道点,并且把这几个布道点的情况公告给了郊区所有的村民,于是每个村民到离自己家最近的布道点去听课. 听课之后,大家觉得距离太远了,于是每个牧师统计了一下自己的课上所有的村民的地址,搬到了所有地址的中心地带,并且在海

随机推荐