我正在尝试找到一种用于绘制可用于高性能应用程序的数据(主要是折线图等)的工具。我的数据窗口通常包含 500 到几千个点,我会对 10 左右的帧率感到满意。我在套接字上以二进制流的形式接收数据。我在 Mac OS X 上。
我尝试了几种解决方案,并在下面讨论我与他们的经验。
R : 非常慢,跟不上,阅读套接字很痛苦,图形闪烁。
matplotlib : 很慢,但也有点用。然而,它需要大量的 Python 机器才能运行,而且 IMO 的 API 非常不透明。在不断更新的情况下,包含图形的窗口变为模态,并且出现 Mac 沙滩球——不适合用户交互。
Gnuplot : 更好的性能和 API。但是,通过生成临时 ASCII (!) 文件来向 gnuplot 传输大量数据——这意味着如果我的帧速率上升,我将开始进行大量磁盘读取,这是一个性能问题。
还有其他建议吗?
最佳答案
尝试使用管道数据而不是临时文件的 gnuplot。示例用法:
plot "data_acquisition_cmd <" with image
您也可以通过从管道中读取命令来输入无穷无尽的重新绘制流:
load "while [ 1 ]; do echo 'replot'; done <"
要获得更强大的解决方案,请考虑使用 Perl 中的 gnuplot 接口(interface),例如 GnuplotIF , 或 Python ( gnuplot.py ),因为它们允许对 gnuplot 进行编程控制以及将数据直接传递给它的能力。
编辑:感谢 Jonhoo 的语法更正
关于performance - 高性能实时数据显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9162331/