最近のGnuplotは累積分布関数の図を作成する機能がある. smooth cumulative というキーワードで以下のように使用する.

1
2
3
4
5
6
7
8
9
set term pngcairo

set output "output.png"

n=300. # number of items

plot "exp.dat" using 1:(1/n) smooth cumulative,\
     "exp.dat" using 2:(1/n) smooth cumulative,\
     "exp.dat" using 3:(1/n) smooth cumulative,

plot data

乱数は以下のpython script を使用して指数分布に従う乱数生成した.

1
./exp-dist.py > exp.dat
1
2
3
4
5
6
#!/usr/bin/python

import random

for i in range(0,300):
    print(random.expovariate(1.0), random.expovariate(2.0), random.expovariate(3.0))

なお, exp.dat は以下のような中身となる.

1
2
3
4
5
6
7
0.0778772621705645 0.8648160226533618 0.09768962347204647
0.5323546101001541 1.0450305213159485 0.41366130345380875
0.3319253437444042 0.24425389834636738 0.39218969412180654
...
2.7674464102974574 0.4383434663546025 0.043882824840322694
1.7455659986059138 0.32788838109869944 0.11837533381132148
0.24554719603230973 0.03548246636395872 0.0208608053108276

環境

  • Gnuplot 4.6
  • Python 3.4.2
  • ArchLinux