C++でgnuplotの出力を画像で保存する

Last update: 2024/12/15


実行環境

前提条件

gnuplotがインストールされてPATHが通っていること。gnuplotのインストールについてはこちらを参照。

ソースコードと出力した画像

私は主にLinux PCにSSH接続してCLIでLinuxを使っているため、gnuplotでウィンドウを立ち上げてグラフを表示させるより、画像ファイルで出力できたほうが何かと都合がよい。画像出力のテストとして、C++でSin波をplotした画像をpngファイルとして出力してみる。

#include <iostream>
#include <cstdlib>
#include <cmath>

int main() {
        FILE *GP;
        GP = popen("gnuplot", "w");

        fprintf(GP, "set terminal png \n");
        fprintf(GP, "set output 'output.png'\n");
        fprintf(GP, "plot sin(x)\n");

        fflush(GP);
        pclose(GP);
        return 0;
}

上のコードでは必要最小限の内容だけ書いているが、基本的にはターミナル上でgnuplotを使う時と同様のコマンドをfprintfで設定すればよい。

上のソースコードをg++でコンパイルして実行したところ、以下の画像がファイル出力できた。

参考文献

肖 鋒 (著), 長崎 孝夫 (著) , 数値流体解析の基礎 - Visual C++とgnuplotによる圧縮性・非圧縮性流体解析 -, 2020, コロナ社

Cプログラムからパイプ経由でgnuplotを呼び出してグラフを書く(windows)


Copyright (c) 2024 kd