今日の一言
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。
[TrackBack URL: http://akihiro-i.net/~akihiro-i/diary/tb.rb/20100826]