
Contents
実行環境
••
•
•
psql
準備その 1 : Octave 動作確認
まず、前回の$ d:/works/octave/current/bin/octave-cli GNU Octave, version 4.0.0 Copyright (C) 2015 John W. Eaton and others. This is free software; see the source code for copying conditions. There is ABSOLUTELY NO WARRANTY; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For details, type 'warranty'. Octave was configured for "i686-w64-mingw32". Additional information about Octave is available at http://www.octave.org. Please contribute if you find this software useful. For more information, visit http://www.octave.org/get-involved.html Read http://www.octave.org/bugs.html to learn how to submit bug reports. For information about changes from previous versions, type 'news'. octave:1> plot(1:10)

グラフをよく見ると目盛ラベルの数値が変です。
他の環境でも問題が再現するか、職場の


職場の
準備その 2 : Cygwin 版 psql から Octave 対話シェルの動作確認
psql# \setenv octave 'd:/works/octave/current/bin/octave-cli -q' # \! $octave octave:1> plot(1:11) octave:2> exit # (returned to psql)

前項と同様、対話型シェルに普通に入ることができ、グラフ出力は目盛ラベルだけ変という結果。今回はこれでテストを終え、次に本来の目的「PostgreSQL
クエリ結果を Octave に渡し、対話型シェルでグラフ描画
Octavepsql
-- set output format # \t on \\\pset format unaligned \\\f ' ' # select x, y, sin(r) / r from generate_series(-8, 8, 0.4) as x, generate_series(-8, 8, 0.4) as y, cast(sqrt(x^2 + y^2) + 1e-9 as float) as r \g tmp3 \\\! $octave --persist --eval "d=load('tmp3');" octave:1> x = sort(unique(d(:,1))); octave:2> y = sort(unique(d(:,2))); octave:3> z = reshape(d(:,3), length(x), length(y)); octave:4> mesh(x, y, z) octave:5> exit # (returned to psql)

プロットしたのはドキュメントにあるソンブレロ。3
Octave 起動と同時にグラフを出す場合
例えば ↓ こんな感じ。クエリは前項のソンブレロ用-- set output format # \t on \\\pset format unaligned \\\f ' ' # \g tmp3 \\\! $octave --persist --eval "d=load('tmp3'); plot3(d(:,1), d(:,2), d(:,3))" octave:1> ...

上のようにグラフを描画した後、そのまま
グラフを閉じたら即 psql に戻る場合
前項の方法で、psql-- set output format # \t on \\\pset format unaligned \\\f ' ' # \g tmp3 \\\! $octave --eval "d=load('tmp3'); plot(d(:,1), d(:,3));waitfor(gcf); exit"

グラフ描画後に続いてコマンド
この状態ではシェルが反応しなくなりますが、Ctrl-C
さらにもう一歩進め、「グラフをクリック」するだけでも自動的に閉じて
-- set output format # \t on \\\pset format unaligned \\\f ' ' # \g tmp3 \\\! $octave --eval "d=load('tmp3'); bar(d(:,3));waitforbuttonpress; exit"

以上、gnuplot