私はGNUplotとC++を使ってグラフをリアルタイムでプロットしようとしています。 これを行う良いライブラリを知っている人はいますか? ありがとうGnuplotのグラフをC++でリアルタイムにプロットする方法は?
答えて
gnuplotはパイプ経由の入力をサポートしています(ウィンドウでは、これに別の実行可能ファイルがあります、pgnuplot
)。そして、gnuplotに新しいコマンドを送ることができます。例えば、replot
のように、gnuplotインターフェースに直接入力する場合と同じです。
パイプ接続を設定し、C++プログラムからパイプの送信側に書き込む方法は、オペレーティングシステムによって異なりますので、さらに役立つ場合は、使用しているものを教えてください。
Windowsでは、CreatePipe
があり、CreateProcess
に渡されたSTARTUPINFO
構造体の要素を設定します。 pgnuplot
のステータスメッセージが必要な場合は、hStdOutput
と同じです。
POSIX(Unix、Linux、Mac OSXなど)では、単方向接続を取得するための素早い方法としてpopen
を使用できます。双方向の場合は、Windowsの場合と同様に動作します。pipe
の場合は、fork
、子プロセスの場合はdup2
と入力してstdinとstdoutをパイプに関連付けます。には子プロセスを置き換えますセットアップ。
EDIT:the gnuplot documentationから:
特別なファイル名「 - 」は、データがインラインであることを 指定します。すなわち、それらは のコマンドに従います。コマンドに続くデータは のみです。 プロットのようなオプション フィルタ、タイトル、およびラインスタイル はプロットコマンドラインに残ります。この は、Unixシェルスクリプトの< <に似ています。 とVMS DCLの$ DECKに似ています。データは のように入力され、 のファイルから読み取られます.1つのデータポイントは レコードです。 の最初の文字「e」は、データ のエントリを終了します。これらのデータに を適用すると、 というフィルタリング機能を使用して、 という意味の関数にすることができますが、おそらく という列を選択することはできません。
ソフトリアルタイムプロットに興味がある場合は、おそらくハードウェアアクセラレーションされたグラフィックスAPI(OpenGLなど)を使用し、チャートを自分でプロットするのが最適です。
これはCのインターフェイスですが、同じリンクにはC++のインターフェイスがいくつかあります。またはPlPlotを試すこともできます。
見てくださいhttp://search.cpan.org/~dkogan/feedGnuplot-1.08/bin/feedGnuplotこれはコマンドラインユーティリティですが、プログラムから制御するとうまく動作します。
私のC++コードでは、g ++ Apple LLVMバージョン5を使用しているMac OsX mavericks上で動作しました。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. javafxリアルタイムでグラフをプロットする方法
- 2. C++でGNUplotを使ってグラフをプロットする方法
- 3. coreplotを使ってグラフをリアルタイムでプロットする方法は?
- 4. python Gnuplotを使って棒グラフをプロットする方法は?
- 5. C++のgnuplotで幾何学グラフをプロットする
- 6. GNUPLOTのグラフをコマンドラインで動的にプロットする方法はありますか?
- 7. グラフの検索をリアルタイムでプロットする
- 8. gnuplotでツリーグラフをプロットする方法
- 9. リアルタイム更新をプロットする方法は?
- 10. 2列の値をC#interopで線グラフにプロットする方法
- 11. gnuplotの:gnuplotのでプロット
- 12. Androidでグラフをプロットする方法は?
- 13. 複数のグラフをgnuplotにプロットするスクリプト
- 14. gnuplotで球の表面をプロットする方法は?
- 15. Gnuplotでパレットを使って位置をプロットする方法は?
- 16. GNUplotで3列をプロットするには?
- 17. gnuplotでvectical行をプロットする方法は?
- 18. Torch gnuplotで2行をプロットする方法は?
- 19. WeekOnWeekグラフを1つのZingChartグラフにプロットする方法は?
- 20. c#リアルタイムのグラフの更新
- 21. Gnuplotは方程式のグラフを間違ってプロットしますか?
- 22. gnuplotで関数上の点をプロットする方法
- 23. gnuplotのヒートマップをプロットする
- 24. gnuplot - ループでプロットする
- 25. QtでリアルタイムにADCグラフをプロットしたい
- 26. グラフのグラフを図形的にC++でグラフにプロット
- 27. JFreechartグラフに複数のグラフをプロットする方法
- 28. Pythonのサブプロセス:gnuplotに変数をプロットするコマンドをパイプする方法は?
- 29. gnuplot:複数の入力ファイルのデータを1つのグラフにプロットする
- 30. C(ubuntu)でグラフをプロットする
私はそれを考えましたが、個々のポイントを送信するコマンドは何ですか?私はデータファイルや関数をプロットする方法だけを知っています。 x1 y1、x2 y2のようにプロットするにはどうすればいいですか? – chutsu
@chutsu:あなたは既にgnuplotの部分を知っていたと言っていたので、これらの詳細を提供しませんでした。とにかく、関連する段落をドキュメントから追加しました。 –