ナンクル力学系

学んだ事を書き連ねていこう。

Archive for October 2009

ローカルに Subversion のリポジトリを作る方法

leave a comment »

$HOME/tmp/svntest っていうディレクトリ以下に,リポジトリ repo1 を作って co1/repo1 にチェックアウトしてみた.

まずリポジトリを作る:

mkdir ~/tmp/svntest
svnadmin create $HOME/tmp/svntest/repo1

作ったリポジトリをチェックアウトして使う:

mkdir ~/tmp/svntest/co1
svn co file://$HOME/tmp/svntest/repo1 repo1
cd ~/tmp/svntest/co1/repo1/
touch README
svn add README
svn ci -m ""

Written by tkf

October 4, 2009 at 8:25 am

Posted in PC

Tagged with

matplotlib でタイル状にグラフをしきつめるようなプロットをする

leave a comment »

こういうグラフを書きたい:

https://i0.wp.com/farm3.static.flickr.com/2568/3977125592_ae7c87d90e.jpg
最近気づいたのは pylab は遅いけど matplotlib.pyplot だと早いということ. pylab を使うと簡単にかけそうだけど,たくさん書きたいので matplotlib.pyplot で頑張ることに.

どこの処理が時間かかってるのか計るコードも入れた (tm なんちゃらってのが計測している部分). 最新の matplotlib (0.99) が必要.

コード:

import matplotlib.pyplot as plt
from mpl_toolkits.axes_grid import AxesGrid
import numpy

tm = []
def tm_append(tm):
    import time
    tm.append(time.time())
def tm_print_diff(tm):
    for (t0,t1) in zip(tm[:-1],tm[1:]):
        print t1 - t0

list_func = [ numpy.sin,
              lambda x: numpy.exp(-0.1*x),
              lambda x: numpy.sin(x)*numpy.exp(-0.1*x) ]
list_tmax = [5, 10, 15, 20]
nrows_ncols = (len(list_func), len(list_tmax))

tm_append(tm) ## time
F = plt.figure(1)
F.clf()
tm_append(tm) ## time
grid = AxesGrid(F, 111, # similar to subplot(111)
                nrows_ncols = nrows_ncols,
                axes_pad = 0.0,
                add_all=True,
                aspect=False,
                )
tm_append(tm) ## time

for ax in grid:
    ax.cla()
grid.set_label_mode('L')
tm_append(tm) ## time

i = 0
for f in list_func:
    for tmax in list_tmax:
        t = numpy.arange(0,tmax,0.1)
        grid[i].plot(t, f(t))
        i += 1
tm_append(tm) ## time

plt.draw()
plt.savefig('axesgrid.png')
#plt.show()
tm_append(tm) ## time

tm_print_diff(tm)

結果:

1.4825220108
2.09476304054
0.745758056641
0.0568108558655
1.95767402649

やっぱり, plt.figure (1行目) や AxesGrid (2行目) は時間かかるっぽいな. 二回目以降は for ax in grid 以下を実行してやれば良いので,かなりお得かな. ax.cla() した後で grid.set_label_mode(‘L’) して一番下と一番左以外の軸にラベルがつかないように しているのがミソ.

Written by tkf

October 3, 2009 at 10:50 pm

Posted in PC

Tagged with ,