Archive for October 2009
ローカルに Subversion のリポジトリを作る方法
$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 ""
matplotlib でタイル状にグラフをしきつめるようなプロットをする
こういうグラフを書きたい:

最近気づいたのは 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’) して一番下と一番左以外の軸にラベルがつかないように しているのがミソ.