我試圖用GNUplot和C++實時繪製圖形。 有沒有人知道有這樣做的好的庫? 謝謝如何在C++中實時繪製Gnuplot圖?
回答
gnuplot的支持通過管道輸入(在Windows中,有一個爲這一個單獨的可執行,pgnuplot
)。然後你的程序可以向gnuplot發送新命令,例如replot
,就像直接將它們輸入到gnuplot接口一樣。
你如何建立管道連接,並寫入管道從C發送端++程序因操作系統而異,所以你必須告訴我們您正在使用的是什麼,如果你想更多的幫助。
在Windows上,有CreatePipe
,然後將STARTUPINFO
結構的hStdInput
元素設置爲CreateProcess
。如果您需要pgnuplot
的狀態消息,請與hStdOutput
同上。
在POSIX(Unix,Linux,Mac OSX等)上,您可以使用popen
作爲獲得單向連接的快捷方式。對於雙向,它在Windows上更像:pipe
獲取句柄的結尾,然後fork
,並在子進程調用dup2
將stdin和stdout與管道關聯,然後exec
有gnuplot
替換子進程,保持管道建立。
編輯:從the gnuplot documentation:
的特殊文件名「 - 」指定 該數據是內聯;即,他們按照該命令 。只有數據 遵循命令; 陰謀選項如 過濾器,標題和線型 仍然在陰謀命令行。這 類似於<在UNIX < shell腳本, 和VMS DCL $甲板。這些數據是 進入,就好像他們正在讀 從一個文件,每 記錄一個數據點。第一列 開頭的字母「e」終止數據 條目。 使用選項可以應用 這些數據 - 使用它來過濾 他們通過一個函數可能會使 感,但選擇列可能 不!
如果您對軟實時繪圖感興趣,您可能最好使用硬件加速圖形API(如OpenGL),並自行繪製圖表。
您是否嘗試過gnuplot interfaces in ANSI C ?,這是一個用於C的接口,但在相同的鏈接中有一些用於C++的接口。或者你可以試試PlPlot。
看http://search.cpan.org/~dkogan/feedGnuplot-1.08/bin/feedGnuplot這是一個命令行工具,但也是行之有效的,如果從程序進行控制。
在我的C++代碼,這個工作(在Mac OSX上特立獨行,採用G ++蘋果LLVM 5版本。0):
#include <sys/types.h>
#include <unistd.h>
...
// ready to make a plot
pid_t childpid=fork();
if(childpid==0) {
// child process makes plot
std::FILE* pipehandle=popen("gnuplot -persist","w");
// make some plot. You can send multiple commands to the pipe each ending in \n
std::fprintf(pipehandle,"plot \"results.txt\" using 1:2 with lines\n");
std::fprintf(pipehandle,"quit\n");
std::fflush(pipehandle);
std::fclose(pipehandle);
// child process exits
exit(0);
}
// parent process waits for child process to exit
waitpid(childpid,NULL,0);
// you can now repeat to make other gnuplots; all will appear simultaneously in the
// terminal and are persistent after the parent process has finished.
- 1. 如何在gnuplot中繪製條形圖?
- 2. 如何在C++中使用GNUplot繪製圖形
- 3. 在c中實時繪圖#
- 4. 如何在gnuplot中繪製垂直線?
- 5. 如何用Gnuplot繪製線條圖?
- 6. 如何用Gnuplot繪製乳膠圖?
- 7. gnuplot從陣列2-D繪圖 - 實時
- 8. 如何繪製的gnuplot
- 9. 繪製在gnuplot的
- 10. 繪製在gnuplot的
- 11. 使用Gnuplot在3d圖中繪製一組2d的繪圖
- 12. 如何繪製GNUplot中的3列?
- 13. 如何在gnuplot中繪製一個樹形圖
- 14. 如何在Gnuplot中使用數據圖繪製分段函數?
- 15. gnuplot的:如何繪製日期/時間圖表
- 16. Gnuplot中的動態繪圖(在MATLAB中繪製)
- 17. javafx如何實時繪製圖表
- 18. 使用gnuplot繪製robertson圖/ pd圖
- 19. 如何在c中繪製直方圖
- 20. 如何在C#中繪製XY圖形?
- 21. 如何在C中繪製三維圖?
- 22. 如何在C#中繪製熱圖形?
- 23. 如何在python中實時繪製實時圖而不保留之前的圖?
- 24. 使用gnuplot從C++繪製幾何圖形
- 25. gnuplot - 繪製循環
- 26. gnuplot,只繪製圖例而不繪製圖
- 27. 如何從C程序中使用gnuplot來繪圖
- 28. 如何在WPF和C#.net 3.5中繪製實時信號?
- 29. 如何繪製兩行火炬gnuplot?
- 30. 在Visual Studio C++中繪製實時圖形
我認爲,但發送個別點的命令是什麼?我只知道如何告訴它繪製數據文件或函數。我該如何繪製像x1 y1,x2 y2,逐點? – chutsu 2010-12-15 12:15:34
@chutsu:我沒有提供這些細節,因爲你說你已經知道gnuplot的一部分。無論如何,從文檔中添加相關段落。 – 2010-12-15 17:47:40