【C++】Gnuplotと連携してグラフを描画したい

Gnuplotでグラフ描画

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;
}

結果はこちら。

sin波

今回は以上です。

3. 参考サイト

[Windows] C言語でgnuplotを動かす
https://www.eng.kagawa-u.ac.jp/~haruna/memo/gnuplot/gnuC.html

コメント

タイトルとURLをコピーしました