標準入力からgnuplot

忘れそうなのでメモ。

% cat plot.txt
plot '-' w l
1 1
2 4
3 9
4 16
e
% gnuplot -persist < plot.txt
  • -persistでグラフウィンドウ表示
  • plot '-'でファイルの代わり。eまたはendで終了。

プログラムから利用するときに便利です。

Rubygnuplot

2乗のグラフ。

#!/usr/bin/ruby

puts "plot '-' w l"
100.times do |i|
  printf "%d %d\n", i, i * i
end
puts "end"

実行する。

% ./plot.rb | gnuplot -persist

Schemegnuplot

フィボナッチのグラフが見たい!!

(define (plot d)
  (display "plot '-' w l\n")
  (force d)
  (display "end\n"))

(define (fib n)
  (define (iter a b count)
    (display (format "~a ~a\n" count b))
    (if (= count n)
        b
        (iter (+ a b) a (+ count 1))))
  (iter 1 0 0))

(plot (delay (fib 20)))

はじめて遅延評価を使ってみた。

Scheme 入門 17. 遅延評価より。

通常のプログラム言語では繰り返しはそれ用の構文を使って書く必要があったので プログラムのモジュール化には限界があります。一方、遅延評価リストを使うと データに繰り返し計算されるという性質を持たせることができるので、 プログラムを簡潔に書くことができます。

遅延評価が好きになった。

実行する。

% gosh plot.scm | gnuplot -persist

後は継続・・・。