Pythonであればmatplotlibなどグラフを描画してくれる便利なライブラリがあります。一方、C++でグラフを描画しようと思うとCSVなどにデータを出力してExcelなどで確認することになります。そこでGnuplot使ってC++でグラフの描画をしてみます。
1. Gnuplotの設定
Gnuplotはグラフを描画するためのアプリケーションです。
こちらのサイトからダウンロードできます。
インストールが完了したらコマンドプロンプトで以下のコマンドを実行しインストールされた場所を確認します。
where gnuplot
デフォルトであれば以下の場所にインストールされると思います。
C:\Program Files\gnuplot\bin\gnuplot.exe
Gnuplotを起動するためには「_popen」を使いますが、ファイルパスにスペースが入っていると正しく認識してくれないようです。そこでプロジェクトフォルダに「Gnuplot」というフォルダを作成し、「C:\Program Files\gnuplot\bin」の中のファイルをすべてコピーします。
2. グラフを表示してみる
C++でSin波を表示してみる。
#include <iostream>
using namespace std;
int main()
{
FILE *fp;
char command[100];
float fXRange[2] = { -5.0, 5.0 };
float fYRange[2] = { -1.0, 1.0 };
// Gnuplot起動
if ((fp = _popen("Gnuplot\\gnuplot.exe", "w")) == NULL) {
cout << "Gnuplotが起動できません" << endl;
return -1;
}
// コマンド送信
sprintf_s(command, 100, "set xrange [%f:%f]\n", fXRange[0], fXRange[1]);
fprintf(fp, command);
sprintf_s(command, 100, "set yrange [%f:%f]\n", fYRange[0], fYRange[1]);
fprintf(fp, command);
fprintf(fp, "plot sin(x)\n"); // Sin波描画
fflush(fp);
system("pause");
fprintf(fp, "exit\n"); // Gnuplotの終了
_pclose(fp);
return 0;
}
結果はこちら。

今回は以上です。
3. 参考サイト
[Windows] C言語でgnuplotを動かす
https://www.eng.kagawa-u.ac.jp/~haruna/memo/gnuplot/gnuC.html



コメント