当前位置: 首页 > news >正文

数据分析——Python绘制实时的动态折线图

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

目录

  • 1.数据绘制
  • 2.绘制实时的动态折线图
  • 3.保存实时数据到CSV文件中

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 = 0while True:if t >= 100 * np.pi:plt.clf()t = 0t_list.clear()result_list.clear()else:t += np.pi / 4t_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 += 1x_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)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

http://www.lryc.cn/news/485813.html

相关文章:

  • 【Redis】Redis的一些应用场景及使用策略
  • CentOS 8 安装 chronyd 服务
  • HarmonyOS ArkUI(基于ArkTS) 常用组件
  • 不用来回切换,一个界面管理多个微信
  • MySQL系统优化
  • 若依笔记(八):芋道的Docker容器化部署
  • 前端隐藏元素的方式有哪些?HTML 和 CSS 中隐藏元素的多种方法
  • sqli—labs靶场 5-8关 (每日4关练习)持续更新!!!
  • 【Java】异常处理实例解析
  • flutter调试
  • 使用Web Workers提升JavaScript的并行处理能力
  • 【含开题报告+文档+PPT+源码】基于Spring Boot智能综合交通出行管理平台的设计与实现
  • STM32寄存器结构体详解
  • 如何建立devops?
  • shell基础(3)
  • 2024年11月16日Github流行趋势
  • k8s更新
  • ES6进阶知识一
  • C#/WinForm拖拽文件上传
  • IT运维的365天--019 用php做一个简单的文件上传工具
  • 详细的oracle rac维护命令集合
  • 23 种设计模式详解
  • Python毕业设计选题:基于django+vue的二手物品交易系统
  • VMware 17虚拟Ubuntu 22.04设置共享目录
  • Rust学习(五):泛型、trait
  • 智能零售柜商品识别
  • 2024智能机器人与自动控制国际学术会议 (IRAC 2024)
  • 计算机组成原理:总线与微命令
  • 10月回顾 | Apache SeaTunnel社区动态与进展一览
  • 网络基础(4)传输层