質問
これは私の最初の投稿であり、私はC ++および一般的なコンパイルの初心者です。
いくつかのグラフを描画する必要があるプログラムをコンパイルしています。プログラムは .datファイルを作成し、gnuplotを開いてプロット ' .dat'を書き込む必要があります。大丈夫です。
gnuplotを自動的に開き、必要なプロットを表示する方法はありますか?コードでsystem()関数を使用してgnuplotを呼び出す必要がありますが、どうすれば必要なものをプロットさせることができますか?
不完全な英語についてはごめんなさい:s
とにかく注意をありがとう!
解決
OSによっては、 popen()を使用できる場合があります。これにより、gnuplotプロセスを生成し、他のFILE *と同様に書き込むだけです。
プロットするデータポイントがある場合、 plot"-"を使用してインラインで渡すことができます。 ... オプション。同様に、データスタイルポイント/ライン/ラインポイント/その他の設定オプションを検討することもできます。
一時停止または持続なしで、gnuplotは入力ストリームの終了時に終了します。あなたの例の場合、それはファイルの終わりに達したときでしょう。
出力ファイル(グラフ)を作成(書き込み)するには、次を使用します:
set terminal png small
set output "filename.png"
端末の設定には多くのオプションがあります。 PNGは通常そこにあります。そうでない場合は、おそらくgif、tiff、またはjpegですか?
ファイルの上書きに注意してください!
set size 2,2 を使用して、より大きなグラフを作成できます。一部の端末の設定バリアントでは、サイズを指定することもできます。
他のヒント
今日もこれを学んでいます。これが私が作り上げた小さな例です。
#include <iostream>
#include <fstream>
using namespace std;
int main(int argc, char **argv) {
ofstream file("data.dat");
file << "#x y" << endl;
for(int i=0; i<10; i++){
file << i << ' ' << i*i << endl;
}
file.close();
return 0;
}
plot.cppとして保存し、g ++でコンパイルします:
g++ plot.cpp -o plot
プログラムを実行して.datファイルを作成します:
./plot
次のgnuplotスクリプトをplot.pltとして保存します。
set terminal svg enhanced size 1000 1000 fname "Times" fsize 36
set output "plot.svg"
set title "A simple plot of x^2 vs. x"
set xlabel "x"
set ylabel "y"
plot "./data.dat" using 1:2 title ""
gnuplotでスクリプトを実行して、.svgファイルを生成します:
gnuplot plot.plt
結果のプロットはplot.svgにあります。出力を指定する最初の数行を省略すると、ウィンドウにレンダリングされます。楽しむ!
考えられるほど簡単な場合もある
gnuplot file
fileはデータでも結果ファイルでもありませんが、コマンドラインに入力するコマンドを含むファイルです。そこに必要なコマンドを入力するだけです(使用している定数ファイルまたは生成したファイル)。 そのファイル内のすべてのコマンドを実行すると、gnuplotは終了します。
はい、できます。プロットを設定し、そのファイルから実行されているgnuplotを開くために入力するコマンドを含むファイルを作成できます。 このリンクには、その方法を説明した記事があります。 EPSまたは他のグラフィカル出力形式に出力し、ファイルを読み込む別のウィジェットを使用してプロットを表示することもできます。
コマンドに「-persist」フラグを使用する必要がある場合があります。 * nixシステムでは、gnuplotプロセスが完了して終了した後にプロットウィンドウを残したい場合、このフラグが必要であることを知っています。
gnuplot -persist commands.gp
また、ファイルには好きなだけgnuplotコマンドを入れることができます。この点で、ファイルはバッチスクリプトのように機能します。
行を追加する必要がある場合があります
pause -1
これは、リターンが押されるまでプロットを表示します。
おそらく表示されるのは、プロットを表示する時間がある前にgnuplotが実行および終了することです。
端末タイプを設定する必要がある場合があります。それについてはgnuplotのドキュメントを読んでください。