トップ «前の日記(2010/08/21(Sat)) 最新 次の日記(2010/09/01(Wed))»
【ソース+水=麦茶色の何か】

半期 四半期 全カテゴリ

今日の一言


2010/08/26(Thu) lov2が面白くなってきた [長年日記] 23:00現在 28℃

_ [雑記][Debian][FC][C++][Ubuntu][gnuplot][研究関係] gnuplotで、データをラベリングして表示する方法

*こちら(http://www.e.ics.nara-wu.ac.jp/~nogu/tips/gnuplot.html)を参考にさせていただきました。

具体的には、

  1.3   4.5  1
 23.4  34.2  2
 46.5  50.1  3

のようなデータファイル(hoge.dat)があった場合に、3列目の1,2,3をラベルとして扱って、グループ分けをしたいとする。

端的に言えば、Excel等で3軸目でソートして別ファイルに分ければいいのだが、この場合、「awk」を使うことで、以下の1文で実現できる。

 plot "<awk '$3 == 1 {print}' hoge.dat", "<awk '$3 == 2 {print}' hoge.dat", "<awk '$3 == 3 {print}' hoge.dat"

かなり便利なので、お試しあれー。

*C/C++からパイプを使って呼ぶ場合も、

 FILE *gnu_fp = popen("gnuplot -persist","w");
 string filename("hoge.dat");
 fprintf(gnu_fp, "plot \"<awk '$3 == 1 {print}' %s\", \"<awk '$3 == 2 {print}' %s\", \"<awk '$3 == 3 {print}' %s\"\n",
            gnudata_file.c_str(), gnudata_file.c_str(), gnudata_file.c_str());

ってな感じでOK。