使用Python绘制实时的动态折线图

 更新时间:2024年11月18日 09:10:59   作者:boss-dog  
这篇文章主要为大家详细介绍了如何使用Python绘制实时的动态折线图,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下

最近在做视觉应用开发,有个需求需要实时获取当前识别到的位姿点位是否有突变,从而确认是否是视觉算法的问题,发现Python的Matplotlib进行绘制比较方便。

import matplotlib.pyplot as plt
import random
import numpy as np
import time
import os
import csv

1.数据绘制

def draw_data():
    index = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    x_data = [1, 0.2, 0.3, 4, 0.5, 0.6, 1, 0.8, 0.9, -1]

    # 创建折线图
    plt.plot(index, x_data, marker='o', color='b', linestyle='-', label='x_data')
    # 设置标题和标签
    plt.title("x_data")
    plt.xlabel("Index")
    plt.ylabel("X Data")
    # 显示图例
    plt.legend()
    # 设置横坐标刻度,使得每个index值都显示
    plt.xticks(index)
    # 显示图形
    plt.show()

2.绘制实时的动态折线图

虽然可以实时绘制,但会不断新增新的窗口,导致越到后面越卡顿,后面采用了保存到CSV文件进行分析的方法。

def realtime_data_draw():
    '''
    动态折线图实时绘制
    '''
    plt.ion()
    plt.figure(1)
    t_list = []
    result_list = []
    t = 0

    while True:
        if t >= 100 * np.pi:
            plt.clf()
            t = 0
            t_list.clear()
            result_list.clear()
        else:
            t += np.pi / 4
            t_list.append(t)
            result_list.append(np.sin(t))
            plt.plot(t_list, result_list, c='r', ls='-', marker='o', mec='b', mfc='w')  ## 保存历史数据
            plt.plot(t, np.sin(t), 'o')
            plt.pause(0.1)

3.保存实时数据到CSV文件中

将实时的数据保存到CSV文件中,通过excel文件绘制折线图进行分析。

def realtime_data_save_csv():
    # 模拟实时生成的轨迹点坐标
    count = 0

    # CSV 文件路径
    file_path = 'vision_data/pose.csv'
    if os.path.exists(file_path):
        os.remove(file_path)

    # 写入表头并开始写入数据
    with open(file_path, mode='w', newline='') as file:
        writer = csv.writer(file)
        # 写入表头
        writer.writerow(['Index', 'X', 'Y', 'Z', 'RX', 'RY', 'RZ'])

        while True:
            count += 1
            x_value = random.uniform(-0.5, 0.5)
            y_value = random.uniform(-0.5, 0.5)
            z_value = random.uniform(-0.1, 0.8)
            rx_value = random.uniform(-3.14, 3.14)
            ry_value = random.uniform(-3.14, 3.14)
            rz_value = random.uniform(-3.14, 3.14)
            # 将生成的数据写入 CSV 文件
            writer.writerow([count, x_value, y_value, z_value, rx_value, ry_value, rz_value])
            time.sleep(0.05)

到此这篇关于使用Python绘制实时的动态折线图的文章就介绍到这了,更多相关Python绘制动态折线图内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python 创建守护进程的示例

    Python 创建守护进程的示例

    这篇文章主要介绍了Python 创建守护进程的示例,帮助大家更好的理解和使用python,感兴趣的朋友可以了解下
    2020-09-09
  • Python参数的传递几种情况实例详解

    Python参数的传递几种情况实例详解

    这篇文章主要给大家介绍了关于Python参数的传递的相关资料,在Python中传递参数指的是函数或方法中的参数传输方式,文中给出了详细的代码示例,需要的朋友可以参考下
    2023-09-09
  • 从基础到进阶带你玩转Python中的异常处理

    从基础到进阶带你玩转Python中的异常处理

    在编程过程中,我们经常会遇到各种运行时错误,比如除零错误、文件未找到错误等,本文将介绍Python异常处理的基础知识,希望对大家有所帮助
    2025-01-01
  • python3使用logging包,如何把日志写到系统的rsyslog中

    python3使用logging包,如何把日志写到系统的rsyslog中

    这篇文章主要介绍了python3使用logging包,如何把日志写到系统的rsyslog中的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-09-09
  • Python多线程:主线程等待所有子线程结束代码

    Python多线程:主线程等待所有子线程结束代码

    这篇文章主要介绍了Python多线程:主线程等待所有子线程结束代码,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-04-04
  • 一文详解NumPy分割与搜索数组

    一文详解NumPy分割与搜索数组

    NumPy 提供了 np.array_split() 函数来分割数组,将一个数组拆分成多个较小的子数组和提供了多种方法来搜索数组中的元素,并返回匹配项的索引,本文将给大家详细介绍NumPy分割与搜索数组,需要的朋友可以参考下
    2024-05-05
  • Python命令行参数解析包argparse的使用详解

    Python命令行参数解析包argparse的使用详解

    argparse 是 python 自带的命令行参数解析包,可以用来方便的服务命令行参数。本文将通过示例和大家详细讲讲argparse的使用,需要的可以参考一下
    2022-09-09
  • 在VS Code上搭建Python开发环境的方法

    在VS Code上搭建Python开发环境的方法

    这篇文章主要介绍了在VS Code上搭建Python开发环境的方法,需要的朋友可以参考下
    2018-04-04
  • python如何禁用print输出

    python如何禁用print输出

    这篇文章主要介绍了python如何禁用print输出问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-02-02
  • python 线性回归分析模型检验标准--拟合优度详解

    python 线性回归分析模型检验标准--拟合优度详解

    今天小编就为大家分享一篇python 线性回归分析模型检验标准--拟合优度详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-02-02

最新评论