C言語_gnuplot

ゆうき( @BASEBALLY15 )です^^

今回は,何の用じゃ?

C言語でグラフを表示する方法を教えてください・・・

了解じゃ!
今回は,C言語と『gnuplot』を使って,グラフを表示する方法を教えるぞ!
(※Visual Studio 2017を使用)

お願いします・・・

どんなグラフを表示させることが出来るの?

今回ご紹介する方法を使うと,以下のように2次元3次元のグラフを表示させることが出来ます^^

・2次元のグラフ

C言語_gnuplot_2次元

・3次元のグラフ

C言語_gnuplot_3次元

それでは,コードを見ていきましょう⤵

C言語とgnuplotを使ってグラフを表示させてみた!

まずは,『gnuplot』をダウンロードしておいてください.

ダウンロードするためのサイトはこちらです.

gnuplotインストール
(画像をクリックすると,ダウンロード先に移動します.)

ヘッダーファイル

ヘッダーファイルを記述していきます.

#include "pch.h"
#include <stdio.h>

//数式を使う際に必要(sinなど)
#include <math.h>

今回は,数式を使うので,『math.h』をインクルードします.

コード

gnuplotでsinのグラフを表示してみよう!

まずは,sinをgnuplotを使って表示します.

void main(void)
{
	//gnuplotを呼びだすために記述
	FILE *gid;

	//gnuplotを呼びだす
	gid = _popen("c:/ooooooooo/xxxxxxxxx/bin/gnuplot.exe", "w");

	//ラベル名
	fprintf(gid, "set xlabel \"x\n");
	fprintf(gid, "set ylabel \"sin\n");

	// 範囲の指定(省略可)
	fprintf(gid, "set xrange [-10:10]\n"); 
	fprintf(gid, "set yrange [-1:1]\n");

    //sin(x)を描く
	fprintf(gid, "plot sin(x);\n");

	//guplotの後処理
	fprintf(gid, "e\n");
	fflush(gid);
	fprintf(gid, "pause mouse\n");
	fflush(gid);
	_pclose(gid);
}

これを実行すると,以下のように2次元のグラフが表示されます.

C言語_gnuplot_2次元

【解説】

  1. _popen()でgnuplotを開く(※exeファイルを使う!)
  2. set xlabelとset ylabelで軸名を付ける
  3. plotでgnuplot上にsin(x)を描く
  4. fflushでgid内のデータを吐き出す
  5. pause mouseで表示し続ける
  6. _pclose()でgidを閉じる

次に,3次元のグラフを表示する方法をご紹介します⤵

gnuplotで3次元のグラフを表示してみよう!

2次元グラフを表示する時のコードと大きく異なるのは以下の点です⤵

2次元のグラフの時

fprintf(gid, "plot sin(x);\n"); 

3次元のグラフの時

fprintf(gid, "splot (x**2+y**2);\n");

plotをsplotに変えます.そして,式にxとyの2つの変数を使います.

これで,3次元のグラフを描くことが出来ます.

全体のコードを載せておきます⤵

void main(void)
{	
	//gnuplotを呼びだすために記述
	FILE *gid;

	//gnuplotを呼びだす
	gid = _popen("c:/ooooooooo/xxxxxxxxx/bin/gnuplot.exe", "w");

	//ラベル名
	fprintf(gid, "set xlabel \"x\n");
	fprintf(gid, "set ylabel \"y\n");

	// 範囲の指定(省略可)
	fprintf(gid, "set xrange [-10:10]\n"); 
	fprintf(gid, "set yrange [-10:10]\n");

	//x^2+y^2のグラフを描く
	fprintf(gid, "splot (x**2+y**2);\n");

	//guplotの後処理
	fprintf(gid, "e\n");
	fflush(gid);
	fprintf(gid, "pause mouse\n");
	fflush(gid);
	_pclose(gid);
	
}

これを実行すると,以下のように2次元のグラフが表示されます.

C言語_gnuplot_3次元

終わりに

今回は,C言語とgnuplotを使ってグラフを表示する方法をご紹介しました.

この方法を使うと,例えば,画像のRGB値をヒストグラムで表すことが出来ます.

実際に,自分自身,大学の研究で画像処理を行っていて,この方法を使っています^^

ぜひ,C言語の勉強をしている方はこの方法を使ってみてください.

それでは・・・

Q &A

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA