我正在尝试找到可用于高性能应用程序的绘图数据工具(主要是线图等)。我的数据窗口通常包含500到几千个点,我对帧率为10左右感到满意。我在套接字上以二进制流的形式接收数据。我在Mac OS X上。
我尝试了几种解决方案,并在下面讨论我的经验。
R :非常慢,无法跟上,读取插座很痛苦,图形闪烁。
matplotlib :非常慢但有点可用。但是,它需要运行大量的Python机器,而IMO的API非常不透明。在不断更新的情况下,包含图形的窗口变为模态,并且出现Mac沙滩球 - 对用户交互不太好。
Gnuplot :更好的性能和API。但是,通过生成临时ASCII(!)文件来传递大量数据到gnuplot - 这意味着如果我的帧速率上升,我开始做大量的磁盘读取,这是一个性能问题。
还有其他建议吗?
答案 0 :(得分:5)
使用管道数据而非临时文件尝试gnuplot。用法示例:
plot "data_acquisition_cmd <" with image
您可以通过从管道读取命令来管理无休止的重新编译:
load "while [ 1 ]; do echo 'replot'; done <"
对于更强大的解决方案,请考虑使用Perl的gnuplot接口,如GnuplotIF或Python(gnuplot.py),因为它们允许对gnuplot进行编程控制,并且能够直接传递数据它。
编辑:感谢Jonhoo进行语法修正
答案 1 :(得分:0)
您可以考虑使用QCustomPlot http://www.workslikeclockwork.com/index.php/components/qt-plotting-widget/
在Qt中编写自己的数据可视化程序它能够显示实时数据并且具有非常好的输出质量,我过去曾将它用于类似的项目。
答案 2 :(得分:0)
Qwt库具有实时绘制数据的能力。源树中甚至有几个例子可以提供不同的实时绘图方式。值得注意的是,我建议您查看示波器,刷新测试和实时示例。
此外,邮件列表上还有recent discussion可能会有所帮助。