1 个不稳定版本
0.1.0 | 2019年11月24日 |
---|
#180 在 可视化
77KB
2K SLoC
在您的桌面上进行实时时间序列分析!
关于
Lognplot 是一个时间序列数据的图形查看器。与其他该领域的许多项目不同,lognplot 不是一个托管网络应用。它是一个桌面应用,可以可视化您应用中的数据。这可以是嵌入式、机器人、移动、PC 或 PLC 应用。
功能
- 实时绘图数据同时保持响应性
- 通过 TCP/IP 链路向 GUI 发送数据。
- 两种 GUI 实现
- python GUI 实现(基于 PyQt5)
- rust GUI 实现(基于 gtk-rs / cairo)
- 客户端库支持
- 将数据导出为 HDF5
- 数据适配器 支持
- ADS
- MQTT
- ROS2
视频
这些是工具的记录视频
屏幕截图
这是 lognplot python 应用的示例屏幕截图,可视化了 1000 万个数据点。请注意,缩放仍然平滑进行。
这是使用 rust 实现的 GTK 图形界面的示例屏幕截图,同样可视化了 1000 万个数据点。
这是当缩放时绘图窗口的示例。请注意,并不是所有点都会显示,而是将数据聚合为 min/max/mean/stddev 线来可视化。
当放大数据时,个别数据点就会出现。
安装
请注意,目前您需要从 GitHub 获取最新的 git 版本。
首先克隆此存储库
$ git clone https://github.com/windelbouwman/lognplot.git
对于 Python,按照以下步骤操作
$ cd lognplot/python
$ pip install .
$ python -m lognplot
对于 Rust,按照以下步骤操作
$ cd lognplotgtk
$ cargo run --release
Rust 和 Python 都发布了软件包
Rust 包:https://crates.io/crates/lognplot
Python 包:https://pypi.ac.cn/project/lognplot/
需求
对于工具的 GTK 变体,您需要安装以下内容
- cairo-gobject-devel
- pango-devel
- atk-devel
- gdk-pixbuf2-devel
- gtk3-devel
- hdf5-devel
用法
要使用此代码的 Python 部分,以演示方式启动 softscope
$ cd python
$ python softscope.py
这将弹出绘图窗口。可以使用键盘键 w,a,s,d 和 i,j,k,l 进行缩放和滚动。按空格或回车键自动调整大小。数据是 10 kHz 生成的信号。
另一个演示是 softscope 服务器。这将打开一个 TCP/IP 端口,可以接收数据。
$ cd python
$ python -m lognplot
softscope 现在已准备好通过网络接收流数据。
接下来,启动演示数据源,它将通过TCP将数据发送到这个GUI
$ cd demo
$ python noize_source.py
另一个服务器演示是代码的Rust部分。按照这种方式启动GUI
$ cd lognplotgtk
$ cargo run
此应用程序将能够通过TCP/IP接收数据。
从C代码发送数据
要从C代码发送数据,请参考位于 demo/c
的示例。此示例使用clognplot rust crate,这是一个静态库,可以从C使用。生成的C程序将通过TCP/IP连接并使用Rust crate的部分将数据发送到绘图工具。
将数据导出为 HDF5
要进一步处理数据(例如,在Python脚本中),您可以使用“文件”->“保存”将所有捕获的数据保存为HDF5文件。
此保存的HDF5文件的使用示例
import h5py
from matplotlib import pyplot as plt
f = h5py.File('datorz.h5', 'r')
group = f['my_datorz']
signal = group['My_signal']
plt.plot(signal[:,0], signal[:,1])
plt.show()
文档
Python用户文档可在此处找到:https://lognplot.readthedocs.io/en/latest/ Rust用户文档可在此处找到:https://docs.rs/lognplot
计划
这是一份待办事项清单
- PyQt5实现
- gtk-rs实现
实时数据可视化的要求
- 添加数据结构以支持追加新数据
- 数据点聚合以支持缩放和显示最小/最大/平均值线
类似项目
这里有一份有趣的类似项目列表。你知道其他项目吗?请提交一个pull request或issue!
- 嵌入式调试器
- getcurve.io
- grafana
- 基于Web
- KST plot
- 可以查看大型CSV文件
- plot juggler
- Qt界面
- 与ROS接口
- Plc-Lab
- 花哨的GUI
- RQT
- 附带ROS
- sigrok
- 流畅的Qt界面
- 与许多逻辑分析仪和示波器接口
- speedscope
- 调用栈跟踪器
- 追踪指南针
- 基于Eclipse
- 支持多种跟踪格式
- tracy profiler
性能分析
为了优化GUI体验,您可以按照以下方法对Rust lognplot gui进行性能分析。
修改 Cargo.toml
文件以包含此片段
[profile.release]
debug = true
这将构建为发布模式,但包含调试符号。
现在,以发布模式构建
$ cargo build --release
接下来,使用linux perf工具对应用程序进行性能分析
$ perf record -F 99 --call-graph dwarf target/release/lognplotgtk
现在进行一些密集的工作。完成后,关闭GUI。
分析perf结果
$ perf report
lib.rs
:
日志和绘图库。
此库用于从系统记录数据,并同时绘制数据。
在调试测试中的系统时,这很有用。
依赖关系
~0–1.5MB
~22K SLoC