C++ で記述された別のプログラム内で継続的に変化する値のリアルタイム表示を生成するために、パイプ インターフェイスを gnuplot (標準的な gnuplot_i.{cpp,hpp}) に使用しようとしています。これは問題なく機能しますが、改善のための提案があるかどうかを確認したかったのです。
この実装には、1 つのベクトルと 2 つのベクトルを 2D プロットとしてプロットする便利なメソッドが含まれています。これは、mktemp 関数への標準ライブラリ呼び出しを介して一時ファイルに書き出し、それを gnuplot プロット呼び出しへの入力として使用することで実現しました。これはあまりにも多くの一時ファイルを生成し、プロットの更新レートが高い場合 (ある時点で IO が制限されている可能性があります) はうまく機能していないように見えました。プロット呼び出しで「-」疑似ファイルを使用し、ベクターをパイプに直接送信することにしました (「e」を含む 1 行で終了します)。これはうまく機能しますが、まだ素晴らしいとは言えません。
値が変更されたときにプロットを継続的に再生成するよりも、私がやろうとしていることをうまくやる方法はありますか? 新しい情報でプロットを更新する頻度はどれくらいですか? あるいは、私がやろうとしていることを達成するためのもっと簡単な方法があるでしょうか?
@アンディ・ロス
それ自体に「要件」はありません。私が巧妙に言ったのは、gnuplot を使用しながら、私が試みていたことを実行するためのより洗練されたアプローチがあった可能性があるということです。エレガントは主観的なものですが、私が現在取っているアプローチは特にエレガントではありません。安全とは、上記のアプローチで IO の問題 (遅延、ディスプレイのロックアップなど) が発生する更新レートを誰かが知っているかどうかということでした。
次の理由から、ツールキットの使用を避けたいと思います (少なくとも私の短いリスト)。
- 特に非ルートとして異なるアーキテクチャに適切にインストールするのは一般的に重要であることがわかりました(およびOS全体で標準ではない依存関係が必要な場合)。
- このソフトウェアを使用している他の人にとって、追加のコンパイル依存関係が発生します。
- ほとんどの人がこの目的のために使用する実際の標準はないようです(私自身と私が一緒に働いているほとんどの人は、通常、ログタイプのファイルを保存し、MATLAB で実行後の分析を行います)。
- gnuplot の構文を知っている/学んでいます。superPlottingApiXX の構文がわかりません。
- gnuplot の機能セットは、私がこのソフトウェアでできるようにしたいことの種類にほぼ理想的です。
ただし、C/C++ プロット ライブラリに関して、上記のリストに適していると思われる特定の提案があれば、私は常に提案に関心があります (警告: それらを見つけるために、すでにかなりの部分を調べました)。