5

我正在尝试找到一种用于绘制可用于高性能应用程序的数据(主要是折线图等)的工具。我的数据窗口通常包含 500 到几千个点,我会对 10 左右的帧率感到满意。我在套接字上以二进制流的形式接收数据。我在 Mac OS X 上。

我尝试了几种解决方案,并在下面讨论我与他们的经验。

R : 慢得可怕,跟不上,阅读套接字很痛苦,图形闪烁。

matplotlib:很慢,但也有点用。但是,它需要大量 Python 机器才能运行,而且 IMO 的 API 非常不透明。在不断更新的情况下,包含图形的窗口变为模态,Mac 沙滩球出现——不适合用户交互。

Gnuplot:更好的性能和 API。但是,通过生成临时 ASCII (!) 文件来向 gnuplot 传递大量数据——这意味着如果我的帧速率上升,我将开始进行大量的磁盘读取,这是一个性能问题。

还有其他建议吗?

4

3 回答 3

6

尝试使用管道数据而不是临时文件的 gnuplot。示例用法:

plot "data_acquisition_cmd <" with image

您也可以通过从管道中读取命令来输入无穷无尽的重新绘制流:

load "while [ 1 ]; do echo 'replot'; done <"

要获得更强大的解决方案,请考虑使用 Perl 中的 gnuplot 接口,例如GnuplotIF或 Python ( gnuplot.py ),因为它们既允许对 gnuplot 进行编程控制,也允许将数据直接传递给它。

编辑:感谢 Jonhoo 的语法更正

于 2012-03-01T13:12:00.137 回答
0

Qwt库具有实时绘制数据的能力。源代码树中甚至有几个示例提供了不同的实时绘图方式。值得注意的是,我建议查看示波器、刷新测试和实时示例。

此外,最近还有一个关于邮件列表的讨论可能会有所帮助。

于 2013-10-17T16:17:44.893 回答
0

您可以考虑使用 QCustomPlot 在 Qt 中编写自己的数据可视化程序http://www.workslikeclockwork.com/index.php/components/qt-plotting-widget/

它能够显示实时数据并具有非常好的输出质量,我过去曾将它用于类似的项目。

于 2012-07-09T12:20:20.530 回答