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

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

目录

python 复制代码
import matplotlib.pyplot as plt
import random
import numpy as np
import time
import os
import csv

1.数据绘制

python 复制代码
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文件进行分析的方法。

python 复制代码
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文件绘制折线图进行分析。

python 复制代码
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)



相关推荐
郭老二14 小时前
【Python】常用模块:xmlrpc
python
名字还没想好☜14 小时前
Python itertools 实战:用 groupby、chain、islice 优雅处理大数据流
linux·windows·python·迭代器·itertools
威联通网络存储15 小时前
TS-h2490FU在面板制造Array段AOI缺陷画廊中的并联
python·制造
接针16 小时前
UV 常用命令
python·uv
hqyjzsb16 小时前
AI证书和传统证书有什么区别?
人工智能·金融·数据挖掘·数据分析·aigc·创业创新·学习方法
无垠的广袤17 小时前
【工业树莓派 CM0 Dev Board】扩展板设计
linux·python·嵌入式硬件·pcb设计·模块化·传感器
Yolanda_202218 小时前
在vscode终端中可使用pip,但是cmd终端中找不到命令 pip问题的解决
vscode·python·conda·pip
2301_7644413318 小时前
用动力学系统(微分方程)为 Kernberg 的客体关系单元提供数学化的操作定义,把“自体—客体“这对心理结构建模成一个二维耦合系统
数据结构·python·算法·数学建模
dogstarhuang18 小时前
用 Doubao-Seed-Evolving + Python 免费写一个网页正文提取工具(实战教程)
爬虫·python·ai编程
猫头虎19 小时前
什么是ZCode for GLM-5.2?
开发语言·人工智能·python·科技·算法·ai编程·ai写作