#graph #plot #graphics

rt-graph

使用 Rust 编写的实时绘图实验

8 个版本

0.3.4 2020 年 10 月 30 日
0.3.3 2020 年 10 月 23 日
0.3.1 2020 年 9 月 28 日
0.2.0 2020 年 9 月 26 日
0.1.1 2020 年 9 月 24 日

#248 in 可视化

MIT 许可证

52KB
1K SLoC

rt-graph

使用 Rust 编写的实时绘图实验。

Screenshot

许多其他绘图工具在添加新数据时不能有效地更新显示,例如,当只添加几个像素的新数据时,会重新绘制整个屏幕。

此包尝试在添加新数据时执行最小的增量工作以更新图表:绘制新数据中的少量像素,并使用高效的大块复制滚动图表,这可以通过 GPU 硬件加速。

由于这种设计,rt-graph 可以轻松处理每秒 30k 个新点,在 60 FPS 下使用,仅占用 3% 的 CPU(在 2016 年的联想 T460 笔记本电脑上测试,配备 2.4 GHz 英特尔酷睿 i5-6300U,运行 Ubuntu 18.04.5)。

源代码仓库: https://github.com/fluffysquirrels/rt-graph-rs/(欢迎提交问题和拉取请求!)

文档: https://docs.rs/rt-graph

包: https://crates.io/crates/rt-graph

先决条件

首先安装 GTK 3 依赖项。

在 OS X 上使用 brew 尝试:brew install gtk+3

在 Ubuntu 上尝试:sudo apt-get install libgtk-3-dev

运行示例

https://github.com/fluffysquirrels/rt-graph-rs/ 克隆源代码仓库,然后尝试使用一些模拟数据运行示例

cargo run --package "example-simple" --release

您可以使用图表下方的滚动条来回滚动,或通过单击“跟随”按钮回到最新数据,并使用按钮进行缩放和缩小。单击图表将在其下方显示信息栏,其中包含您单击处的原始数据。

构建自己的应用程序

要使用自己的数据,实现 DataSource 特性,并在构建 GraphGraphWithControls 时将您的结构体的实例传递给 ConfigBuilder::data_source() 方法。

rt-graph 使用 GTK(通过 gtk-rs Rust 绑定)用于其 UI,并设计为嵌入到应用程序中的任何 gtk::Container 中。

GTK 3 文档:https://developer.gnome.org/gtk3/stable/index.html

gtk-rs(Rust GTK 绑定)文档:https://gtk-rs.org/docs-src/

变更日志

0.3.4

  • 交换 B 和 R 颜色通道,它们顺序相反。

0.3.3

  • Graph 添加 .show.hide 方法。
  • 隐藏的 Graph 跳变频率更低(1Hz),大大减少 CPU 使用率。
  • Graph::tick() 在没有从 DataSource 中摄取数据时执行较少的操作。

0.3.2

  • GraphWithControls 添加 .show.hide 方法。

0.3.1

  • 修复点击没有数据点的图形时的恐慌。
  • 添加 NullDataSource。

0.3.0

  • 翻转 y 轴,使增加的值在屏幕上更高。
  • Store 设为私有。
  • 为所有公共项添加每个项目的文档。
  • 将裸露的 u16u32 使用替换为类型别名 ValueTime

0.2.0

  • 重构 Graph 和 GraphWithControls,以便消费者可以编写自己的控件。

0.1.1

  • 在 README 中添加更多内容,包括屏幕截图。

依赖项

~18–28MB
~502K SLoC