在Python中快速绘制数据

2024-03-11

我正在尝试使用 arduino 绘制来自 mpu6050 imu 的数据。 MPU6050 发送数据的速度比绘图快。 Arduino 代码从串口提供 6 个数据,即偏航、俯仰、滚动、轴、ay 和 az。我需要快速情节的建议。

Python代码:

import serial
import matplotlib.pyplot as plt #import matplotlib library
from drawnow import * 

ser = serial.Serial('COM9', 115200)
yaw = 0.0
pitch =0.0
roll =0.0
ax =0.0
ay =0.0
az =0.0
o_yaw= [0]
o_pitch= [0]
o_roll= [0]
o_ax= [0]
o_ay= [0]
o_az= [0]
plt.ion()
cnt=0
def makeFig(): 
    plt.ylim(-1000,1000)                                 
    plt.grid(True)
    plt.ylabel('Magnitude')  
    plt.plot(olculen_ax, 'ro-', label='ax') 
    plt.plot(olculen_ay, 'bo-', label='ay')  
    plt.plot(olculen_az, 'go-', label='az')                               
    plt.legend()                    
while True:
    incoming=ser.readline()
    if ("hand" in incoming):
        incoming=incoming.split(":")
        if len(incoming)==8:
            yaw = float(incoming[1])
            pitch = float(incoming[2])
            roll = float(incoming[3])
            ax = float(incoming[4])
            ay = float(incoming[5])
            az = float(incoming[6])
            print "Split works"
    else:
        print incoming
    o_ax.append(ax)                    
    o_ay.append(ay)    
    o_az.append(az)
    o_yaw.append(yaw)
    o_pitch.append(pitch)
    o_roll.append(roll)              

    drawnow(makeFig)                       
    plt.pause(.00001)                     
    cnt=cnt+1
    if(cnt>50):                            
        o_ax.pop(0)
        o_ay.pop(0)                     
        o_az.pop(0)

Arduino代码(我只是添加循环。代码源自this https://github.com/jrowberg/i2cdevlib/blob/master/Arduino/MPU6050/Examples/MPU6050_DMP6/MPU6050_DMP6.ino):

void loop() {
    if (!dmpReady) return;
    while (!mpuInterrupt && fifoCount < packetSize) {
    }

    mpuInterrupt = false;
    mpuIntStatus = mpu.getIntStatus();

    fifoCount = mpu.getFIFOCount();

     if ((mpuIntStatus & 0x10) || fifoCount == 1024) {
    mpu.resetFIFO();
    //Serial.println(F("FIFO overflow!"));
} else if (mpuIntStatus & 0x02) {
    while (fifoCount < packetSize) fifoCount = mpu.getFIFOCount();
    mpu.getFIFOBytes(fifoBuffer, packetSize);
    fifoCount -= packetSize;
    mpu.dmpGetQuaternion(&q, fifoBuffer);
    mpu.dmpGetAccel(&aa, fifoBuffer);
    mpu.dmpGetGravity(&gravity, &q);
    mpu.dmpGetLinearAccel(&aaReal, &aa, &gravity);
    mpu.dmpGetLinearAccelInWorld(&aaWorld, &aaReal, &q);
    mpu.dmpGetYawPitchRoll(ypr, &q, &gravity);
    Serial.print("hand:");
    Serial.print(ypr[0] * 180/M_PI);
    Serial.print(":");
    Serial.print(ypr[1] * 180/M_PI);
    Serial.print(":");
    Serial.print(ypr[2] * 180/M_PI);
    Serial.print(":");
    Serial.print(aaWorld.x);
    Serial.print(":");
    Serial.print(aaWorld.y);
    Serial.print(":");
    Serial.print(aaWorld.z);
    Serial.println(":");
}

}

The pyqtgraph http://www.pyqtgraph.org/模块是一个很好的解决方案。它非常快速且简单。

这是新代码:

from pyqtgraph.Qt import QtGui, QtCore
import numpy as np
import pyqtgraph as pg
from pyqtgraph.ptime import time
import serial

app = QtGui.QApplication([])

p = pg.plot()
p.setWindowTitle('live plot from serial')
curve = p.plot()

data = [0]
raw=serial.Serial('COM9', 115200)


def update():
    global curve, data
    line = raw.readline()
    if ("hand" in line):
       line=line.split(":")
       if len(line)==8:
            data.append(float(line[4]))
            xdata = np.array(data, dtype='float64')
            curve.setData(xdata)
            app.processEvents()

timer = QtCore.QTimer()
timer.timeout.connect(update)
timer.start(0)

if __name__ == '__main__':
    import sys
    if (sys.flags.interactive != 1) or not hasattr(QtCore, 'PYQT_VERSION'):
        QtGui.QApplication.instance().exec_()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在Python中快速绘制数据 的相关文章

  • django 管理站点导航侧边栏搞砸了

    我最近在我的项目中添加了一个包并做了一个pip freeze gt requirements txt然后 然后我做了pip install r requirements txt到我的本地 它添加了一个侧边栏 I did a pip inst
  • 在 Chaquopy 中转换数组和张量

    我该怎么做呢 我看到你的帖子说你可以将 java 对象传递给 Python 方法 但这不适用于 numpy 数组和 TensorFlow 张量 以下以及其各种变体是我尝试过的 但没有成功 double anchors new double
  • pygraphviz,导入错误:未定义的符号:Agundirected

    import pygraphviz Traceback most recent call last File
  • 从两个字典创建一个新列表

    这是一个关于Python的问题 我有以下字典列表 listA t 1 tid 2 gtm 3 c1 4 id 111 t 3 tid 4 gtm 3 c1 4 c2 5 id 222 t 1 tid 2 gtm 3 c1 4 c2 5 id
  • @monthly cron 作业不可靠

    我们的客户希望我们每月创建一份报告 过去 我们使用 monthly cron 作业来完成此任务 但这并不可靠 服务器可能会在这一分钟内宕机 Cron 不会重新运行这些作业 如果服务器已启动 此时数据库可能无法访问 如果服务器已启动且数据库已
  • 如何从字典列表中查找键的值?

    如何从字典列表中获取给定键的值 mylist powerpoint color blue client name Sport Parents Regrouped sort order ascending chart layout 1 cha
  • 在 Django 中上传文件

    我在 Django 1 6 版本 中上传文件时遇到问题 当我尝试做的时候new file data save 在我的views py 中我收到此错误 quiz patent 22 medical record 2 exams 处的属性错误
  • 包含可变数据的正则表达式 - ply.lex

    我正在使用 python 模块ply lex编写一个词法分析器 我用正则表达式指定了一些标记 但现在我卡住了 我有一个list of Keywords谁应该是token data是一个包含大约 1000 个关键字的列表 这些关键字都应该被识
  • set() 可以在 Python 进程之间共享吗?

    我正在 Python 2 7 中使用多重处理来处理非常大的数据集 当每个进程运行时 它会将整数添加到共享的 mp Manager Queue 中 但前提是其他进程尚未添加相同的整数 由于您无法对队列进行 in 式成员资格测试 因此我这样做的
  • 从 python 的单词列表中查找最长的常见单词序列

    我搜索了很多解决方案 确实发现了类似的问题 这个答案 https stackoverflow com questions 21930757 longest repeated substring返回可能不属于输入列表中所有字符串的最长字符序列
  • 为什么 PySpark 中的 agg() 一次只能汇总 DataFrame 的一列? [复制]

    这个问题在这里已经有答案了 对于下面的数据框 df spark createDataFrame data Alice 4 300 Bob 7 677 schema name High 当我尝试找到最小值和最大值时 我只得到输出中的最小值 d
  • 为线条指定颜色

    我试图在 matplotlib 中绘制可变数量的行 其中 X Y 数据和颜色存储在 numpy 数组中 如下所示 有没有办法将颜色数组传递到绘图函数中 这样我就不必采取额外的步骤来单独为每条线分配颜色 我是否应该将 RGB 颜色数组转换为另
  • Python Pandas:将参数传递给 agg() 中的函数

    我试图通过使用不同类型的函数和参数值来减少 pandas 数据框中的数据 但是 我无法更改聚合函数中的默认参数 这是一个例子 gt gt gt df pd DataFrame x 1 np nan 2 1 y a a b b gt gt g
  • 如何在python中合并具有相同键的嵌套字典

    我有一个这样的数据结构 SNAPSHOT SnapshotVersion 304 SNAPSHOT SnapshotCreationDate 2015 06 21 17 33 41 CafeData CafeVersion 2807 Caf
  • Django:通过外键将两个表连接到第三个表?

    我有三个型号 class A Model class B Model id IntegerField a ForeignKey A class C Model id IntegerField a ForeignKey A 我想要得到 B i
  • Python docker 容器在完成运行应用程序后立即关闭,即使指定保留在 -d -t 中

    我有一个 dockerfile FROM python 3 WORKDIR app ADD venv venv ADD data file1 csv gz data file1 csv gz ADD data file2 csv gz da
  • 解释 scipy.stats.entropy 值

    我正在尝试使用scipy stats 熵来估计库尔巴克 莱布勒 KL 两个分布之间的散度 更具体地说 我想使用 KL 作为衡量标准来确定两个分布的一致性 但是 我无法解释 KL 值 例如 t1 numpy random normal 2 5
  • 为什么 Python 布尔值占用超过一个字节?

    显然 Python 中整数占用 24 个字节 我可以理解 它这样做是因为代表无限数字的额外花哨 然而 布尔数据类型看起来也花费了高达 24 个字节 尽管它只能表示两个可能值之一 为什么 除了 1 位表示之外 还可能需要存储哪些额外数据Tru
  • 如何在Python中从stdin中逐行读取

    每个人都知道如何在 C 中计算 STDIN 中的字符 但是 当我尝试在 python3 中执行此操作时 我发现这是一个难题 计数器 py import sys chrCounter 0 for line in sys stdin readl
  • Pandas:根据是否为 ​​NaN 来移动列

    我有一个像这样的数据框 phone number 1 clean phone number 2 clean phone number 3 clean NaN NaN 8546987 8316589 8751369 NaN 4569874 N

随机推荐

  • Java 相当于 PHP 简单 HTML DOM 解析器

    由于我必须使用多线程 而我无法在 PHP 中雄辩地解决这个问题 所以我想用 Java 进行编程 不幸的是 我找不到一个库 它可以让我像在 PHP 中那样强大 快速 轻松地解析 HTML DOM 简单的 HTML DOM 解析器 您知道 Ja
  • db.getCollectionInfos 不是一个函数

    我正在编写一个 MERN 应用程序 并尝试使用以下命令获取 MongoDB 数据库中的所有集合名称db getCollectionInfos method https docs mongodb com manual reference me
  • WPF-如何在 控件中显示 ImageSource 的裁剪区域?

    WPF 如何在控件中显示 ImageSource 的裁剪区域 我有一个可用像素大小的 ImageSource 我有一个计算出的裁剪矩形 指示我们实际要使用多少图像 我不想直接编辑图像数据 但我想要我的
  • 如何阻止 vaadin 窃取所有 url 模式(并与 spring mvc 很好地配合)

    我有一个 vaadin 应用程序 我试图提供一些由 spring MVC 提供的 REST URL 我的 web xml 如下 我只在 info 处收到 404 错误 看起来 Vaadin 窃取了所有 url 模式 如果我删除 Vaadin
  • 无法将 Firebase 函数拆分到多个文件中

    我正在使用 firebase 函数并达到数百个函数 现在很难用单个函数来管理它index js文件如大量示例所示 我尝试将该函数拆分为多个文件 例如 firebase json functions node modules index js
  • 在 RecyclerView 项目中显示动态数量的视图?

    我正在尝试重新创建这个 我有一个数据列表 List
  • XDocument.Load(feedUrl) 返回“根级别的数据无效。第 1 行,位置 1。”

    首先 这更多的是一个解决方案 而不是一个问题 我花了一段时间才解决 所以我认为我的解决方案值得分享 我试图使用加载 RSS 提要XDoument Load feedUrl 并收到上述异常 我检查了养活自己 http www limun hr
  • 允许来自 env 的 mod_rewrite 而不是 .htaccess 中的 mod_setenvif

    我试图使用 htaccess 和 Apache 2 2 控制对测试站点 主机的访问 但不控制对生产站点的访问 我使用 mod rewrite 来检测主机名并设置一些用于控制站点各个方面的环境变量 但无法利用它来控制访问 我只能使用 mod
  • 中文字符以粗体呈现

    Silverlight 在文本框中将少数中文字符呈现为粗体 该文本框没有设置字体系列 请参考以下截图 在上面的屏幕截图中 第一个字符比另一个字符更粗 MSDN 的一篇帖子说这是因为字体系列问题和设置SimSun字体系列应该可以解决这个问题
  • 如何更改 matplotlib 中的当前轴实例(即 gca())

    我用一个技巧绘制高度与主轴匹配的颜色条 http matplotlib org mpl toolkits axes grid users overview html colorbar whose height or width in syn
  • 生成唯一的随机字符串

    我正在用 Dancer 编写一个非常小的 URL 缩短器 它使用 REST 插件将发布的 URL 存储在数据库中 该数据库包含六个字符串 用户可以使用该字符串来访问短 URL 现在我对我的随机字符串生成方法有点不确定 sub generat
  • 使用 movefolder 方法时找不到 vbscript 错误路径

    我对 vbscript 相当陌生 并尝试编写一个脚本来获取带有月份和年份标记的文件夹 2012 04 并将它们移动到带有年份标记的文件夹 2012 当我尝试移动文件夹时 我收到 路径未找到 错误 并且我似乎无法在任何地方找到有关其发生原因的
  • 如何计算字符串语句

    给定一个作为计算语句的字符串组合 我怎样才能得到结果 在本例中是下面代码中的列 cal 我知道我可以使用案例 但是有没有直接的方法来进行计算 create table tl test cl1 int create table tl test
  • WPF 的现代 UI - 导航

    如何在页面之间传递参数 我尝试向页面 uri 添加参数 但它不起作用 因为我无法在用户控件上使用 onNavieratedTo 事件 请帮忙 您必须使用 OnFragmentNavigation public void OnFragment
  • 使用 CameraX 的长焦镜头进行变焦

    在我的应用程序中 变焦仅限于主镜头 而不是设备的长焦镜头 如果有的话 长焦镜头可以由任何制造商提供 我不希望实现特定于制造商设备的 API 来访问长焦或广角镜头 这会导致照片质量较差 并且应用程序无法变焦至超过主摄像头的变焦限制 如何使用长
  • 一页上有多个引导轮播,只能控制一个

    我在视图中一次性加载了动态数量的轮播 但我只能滚动浏览渲染的第一个轮播 我怎样才能控制所有加载的 一次只能查看一个轮播 其他轮播被隐藏 myCarousel carousel interval 10000 carousel item eac
  • 我可以在 Julia 中专门化类型定义吗?

    Julia 的参数类型实际上定义了一系列包含不同内存布局的类型 我想知道这是否也适用于复合类型中的字段名称和数量 一个简单的例子如下 type mytype Float64 a Float64 b Float64 end type myty
  • Bigquery 流:“由于超时而无法插入 XX 行”

    最近几天 我们的直播遇到了 Failed to insert XX rows First error errors reason timeout index YY 在过去半个月的连续流式数据源和程序脚本不变的情况下 之前没有发现过这样的故障
  • C++ 获得整数除法和余数的最佳方法

    我只是想知道 如果我想将 a 除以 b 并且对结果 c 和余数都感兴趣 例如 假设我有秒数并想将其分成分钟和秒 那么最好的方法是什么去做吧 可不可能是 int c int a b int d a b or int c int a b int
  • 在Python中快速绘制数据

    我正在尝试使用 arduino 绘制来自 mpu6050 imu 的数据 MPU6050 发送数据的速度比绘图快 Arduino 代码从串口提供 6 个数据 即偏航 俯仰 滚动 轴 ay 和 az 我需要快速情节的建议 Python代码 i