C++で生成したデータをmatplotlibでグラフ表示
ロジックはC++で書きたく、一方グラフ表示までC++で実現するのが少し面倒だったので表示部分はpythonのmatplotlibを使うことにした。
データの引き渡しは本来であれば何らかのIDLを使うのがスマートかもしれないが、安易にファイル渡しとした。
先ず、C++のプログラム
#include <stdlib.h> #include <iostream> #include <fstream> int main() { std::ofstream file("data.txt"); double x[10] = {1,2,3,4,5,6,7,8,9,10}; double y[10] = {1,3,3,2,5,7,4,3.7,2,1}; for(int i=0;i<10;i++){ file << x[i] << " " << y[i] << std::endl; } file.close(); system("python plot_file.py"); return 0; }
ここでdata.txtというファイルにデータが書き込まれている。
最後にsystem関数でplot_file.pyを呼び出している。
以下、plot_file.py
import numpy as np import matplotlib.pylab as plt # ファイルの読み込み readData = np.loadtxt( 'data.txt' ) # 転置 data = readData.T plt.plot( data[0], data[1] ) plt.show()