ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

matplotlib绘制动态图表

2021-07-18 14:32:26  阅读:250  来源: 互联网

标签:cos series matplotlib 图表 xs np ax 绘制 sin


matplotlib绘制动态图表

原理

主要是利用matplotlib的“交互”模式(interactive mode)。交互模式下,图表会实时绘制,对图表的操作会立即反映出来,不会阻塞代码。而非交互模式下,需要先完成对图表的操作,最后调用show()函数显示图表,并且会阻塞在调用show()的地方。交互模式相关函数:

  • ion():打开交互模式
  • ioff():关闭交互模式
  • pause():暂停指定时间
  • cla():清空Axes对象
  • clf():清空Figure对象

示例代码

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.ticker import MultipleLocator, FormatStrFormatter


def main():
    x_start, x_stop = 0, 2*np.pi
    point_cnt = 100
    x_step = (x_stop-x_start)/(point_cnt-1)
    xs = np.linspace(x_start, x_stop, point_cnt)
    x_value = x_stop
    series_sin, series_cos = np.sin(xs), np.cos(xs)

    # 打开交互模式(非阻塞,代码可以继续执行)
    plt.ion()
    fig, ax = plt.subplots()

    def draw():
        ax.plot(xs, series_sin, label=r'$y=sin(x)$')
        ax.plot(xs, series_cos, label=r'$y=cos(x)$')
        ax.xaxis.set_major_locator(MultipleLocator(1))
        ax.xaxis.set_minor_locator(MultipleLocator(0.2))
        ax.xaxis.set_major_formatter(FormatStrFormatter('%.1f'))
        ax.yaxis.set_major_locator(MultipleLocator(1))
        ax.yaxis.set_major_formatter(FormatStrFormatter('%.1f'))
        ax.set_title('Matplotlib in PySide2 demo')
        ax.set_xlabel(r'$x$')
        ax.set_ylabel(r'$y$')
        ax.legend()
        ax.grid()
        ax.axis('equal')

    # 第一次绘制
    draw()

    for _ in range(100):
        # 清除上一次的图表
        ax.cla()

        xs = np.delete(xs, 0)
        series_sin = np.delete(series_sin, 0)
        series_cos = np.delete(series_cos, 0)
        x_value += x_step
        xs = np.append(xs, x_value)
        series_sin = np.append(series_sin, np.sin(x_value))
        series_cos = np.append(series_cos, np.cos(x_value))

        # 重新绘制
        draw()

        # 暂停之前会更新和显示图表
        plt.pause(0.01)

    # 关闭交互模式
    plt.ioff()
    # 需要调用show,否则直接退出
    plt.show()


if __name__ == '__main__':
    main()

结果

结果

参考:https://matplotlib.org/stable/tutorials/introductory/usage.html#what-is-interactive-mode

标签:cos,series,matplotlib,图表,xs,np,ax,绘制,sin
来源: https://www.cnblogs.com/cong-wang/p/15026490.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有