📈

gnuplotのインストールと実行方法あれこれ

2024/06/22に公開

gnuplotとは

  • 2次元 / 3次元グラフを描画できるアプリケーションソフトウェアです.
  • 1986年生まれのオープンソースソフトウェアとして,ライセンスはありますが無料で公開されています.
  • Windows, Linux, OS/Xなど様々なOSに移植されています.
  • 実行方法は,コマンドを都度打ち込む対話的な方法,ファイルからコマンドを読み込む方法,コマンドのオプションに記述する方法などがあります.
  • 主な拡張子は.gp.gnuplot.pltなどが使われています.

インストール

Windows
# WinGet経由
$ winget install gnuplot.gnuplot

# Scoop経由
$ scoop install gnuplot
Linux
# apt経由 (Ubuntu, Debianなど)
$ sudo apt install gnuplot

# pacman経由 (ArchLinuxなど)
$ sudo pacman -S gnuplot

実行方法

対話的(インタラクティブ)

ターミナルからgnuplotと入力すると,gnuplotの対話的な実行環境が起動します.
終了するときはexitを入力してください.

$ gnuplot

        G N U P L O T
        Version 6.0 patchlevel 1    last modified 2024-05-13


        Copyright (C) 1986-1993, 1998, 2004, 2007-2024
        Thomas Williams, Colin Kelley and many others

        gnuplot home:     http://www.gnuplot.info
        faq, bugs, etc:   type "help FAQ"
        immediate help:   type "help"  (plot window: hit 'h')

        Terminal type is now qt
gnuplot> plot sin(x)
gnuplot> exit

また,loadを使うことでgnuplotのコマンドが書かれたファイルを読み込むことも出来ます.

hoge.plt
set xrange [0 : 2 * pi]
set yrange [-1.5 : 1.5]
plot sin(x)
$ gnuplot
gnuplot> load hoge.plt # hoge.pltが読み込まれる

gnuplotコマンドでファイル読み込み

gnuplotコマンドの引数にファイルを指定すると,そのファイルを読み込んで実行されます.

$ gnuplot hoge.plt

Shebangで自己完結

Shebangが扱えるLinux系OSで使用可能です.実行するファイルには次のように書きます.

  • gnuplotの実行ファイルを直接指定する場合

    hoge.plt
    #!/usr/bin/gnuplot
    plot sin(x)
    
  • $PATHからgnuplotを探して指定する場合

    hoge.plt
    #!/usr/bin/env gnuplot
    set terminal emf
    plot sin(x)
    
  • Terminal Typeがqtのような,gnuplotコマンドに--persistオプションが必要な場合

    hoge.plt
    #!/usr/bin/gnuplot -p
    # 以下コマンド
    
    hoge.plt
    #!/usr/bin/env -S gnuplot -p
    # 以下コマンド
    

上記のようなファイルを用意した後,ファイルに実行権限を付与して実行します.

$ chmod 755 hoge.plt
$ ./hoge.plt

gnuplotのオプションに記述

gnuplotコマンドの-eオプションを使うと次のようにgnuplot実行時にコマンドを指定することができます.

$ gnuplot -e 'print "Hello, World!"'

# 複数行書くときはセミコロン(;)で分割する
$ gnuplot -e 'set terminal emf;plot sin(x)'

# -pオプションを併用できる
$ gnuplot -p -e 'set terminal qt;plot sin(x)'

Discussion