9

これは私の最初の投稿であり、私は C++ と一般的なコンパイルの初心者です。

いくつかのグラフを描画する必要があるプログラムをコンパイルしています。プログラムは.dat ファイルを作成し、gnuplot を開いてプロット ' .dat' を書き込む必要があります。それはいいです。

gnuplot を自動的に開き、必要なプロットを表示する方法はありますか? コードで system() 関数を使用して gnuplot を呼び出す必要がありますが、必要なものをプロットさせるにはどうすればよいでしょうか?

私の不完全な英語でごめんなさい:s

とにかく注目してくれてありがとう!

4

7 に答える 7

8

OS によっては、 popen()を使用できる場合があります。 これにより、gnuplot プロセスを生成し、他の FILE* と同じように書き込むことができます。

プロットするデータポイントがある場合は、プロット "-" ...オプションを使用してインラインで渡すことができます。同様に、 set data style points/lines/linespoints/etcオプションを調べたいと思うかもしれません。


一時停止または永続化を行わないと、gnuplot は入力ストリームの終わりで終了します。あなたの例では、それはファイルの終わりに達したときです。


出力ファイル (グラフ) を生成 (書き込み) するには、次を使用します。

set terminal png small
set output "filename.png"

terminalを設定するオプションはたくさんあります。Pngは通常そこにあります。そうでない場合は、おそらく gif、tiff、または jpeg でしょうか?

ファイルの上書きに注意!

より大きなグラフを作成するには、セット サイズ 2,2を使用することをお勧めします。一部のセット ターミナルバリアントでは、サイズを指定することもできます。

于 2009-01-08T20:00:55.287 に答える
5

今日も勉強です。ここに私が調理した小さな例があります。

#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 になります。出力を指定する最初の数行を省略すると、ウィンドウにレンダリングされます。楽しむ!

于 2010-10-19T21:49:47.840 に答える
2

時々それは人が考えるかもしれないほど簡単です

    gnuplot file

ここで、fileはデータでも結果ファイルでもありませんが、コマンドラインに入力するコマンドを含むファイルです。必要なコマンド(お持ちの定数ファイルまたは生成ファイル)をそこに入力するだけです。そのファイル内のすべてのコマンドを実行した後、gnuplotは終了します。

于 2009-01-08T14:45:35.627 に答える
1

はい、できます。プロットを設定し、そのファイルから実行されているgnuplotを開くために入力するコマンドを含むファイルを作成できます。 このリンクには、その方法を説明する記事があります。EPSまたは他のグラフィック出力形式に出力し、ファイルを読み取る別のウィジェットを使用してプロットを表示することもできます。

于 2009-01-08T14:42:27.897 に答える
1

コマンドに「-persist」フラグを使用する必要がある場合があります。*nix システムでは、gnuplot プロセスが完了して終了した後もプロット ウィンドウを残したい場合は、このフラグが必要です。

gnuplot -persist コマンド.gp

また、gnuplot コマンドを好きなだけファイルに入れることができます。この点で、ファイルはバッチ スクリプトのように機能します。

于 2009-01-08T15:38:50.903 に答える
0

端末タイプの設定が必要になる場合があります。それについては gnuplot のドキュメントを読んでください。

于 2009-01-08T15:11:40.660 に答える
0

行を追加する必要がある場合があります

pause -1

これにより、リターンが押されるまでプロットが表示されます。
おそらく、プロットが表示される前に gnuplot が実行されて終了することがわかります。

于 2009-01-08T15:40:01.023 に答える