雲雀は高く空を舞い このページをアンテナに追加 RSSフィード

「ひよこは高く空を舞い」について

2009-10-10

[]ブロックコメント文 ブロックコメント文 - 雲雀は高く空を舞い を含むブックマーク はてなブックマーク - ブロックコメント文 - 雲雀は高く空を舞い ブロックコメント文 - 雲雀は高く空を舞い のブックマークコメント

通常のコメントは %以降改行までだけど、ブロックコメントを実現するには%{\n, \n%}でかこむ

% 通常のコメント

%{
ブロックコメント
部分
%}

[]matplotlib 二軸グラフを書く matplotlib 二軸グラフを書く - 雲雀は高く空を舞い を含むブックマーク はてなブックマーク - matplotlib 二軸グラフを書く - 雲雀は高く空を舞い matplotlib 二軸グラフを書く - 雲雀は高く空を舞い のブックマークコメント

2軸グラフを書くにはsubplotを一枚のグラフ上に重ねるという手法をとる。…ちょっと力技のような気もするけどまぁ…まぁ…

f:id:udzuki:20091010211253p:image:w500

import matplotlib.pyplot as plt
from mpl_toolkits.axes_grid.parasite_axes import SubplotHost

""" define data from h """
starer = [x['starernum'] for x in h]
star = [x['starnum'] for x in h]
post = [x['postnum'] for x in h]
idpost = [x['idpostnum'] for x in h]
keyword = [x['uniquekeywords'] for x in h]
starpost = [x/float(y) for x,y in zip(star,post)]
user = [x['uniqueusernum'] for x in h]

width = .3
indx = arange(24)

starpost = [x/float(y)*100 for x,y in zip(star,post)]
starerposter = [x/float(y)*100 for x,y in zip(starer, user)]
xx = ones((24,1))*100

""" preprocess of plot """
fig = plt.figure(1)
host = SubplotHost(fig, 111)
fig.add_subplot(host)
par = host.twinx()

""" prepare graph """
b1 = host.bar(indx+width*.75*0, post, width, color='r')
b2 = host.bar(indx+width*.75*1, keyword, width, color='b')

p1 = par.plot(indx, starpost, '-o',color='c',ms=5, lw=3, alpha=.7)
p2 = par.plot(indx, starerposter, '-o',color='m',ms=5, lw=3, alpha=.7)
p3 = par.plot(indx, xx,color='y')

host.set_xlabel('hour')
host.set_xticks(indx)
host.set_ylabel('posts')
host.set_title('10-09')
host.set_xlabel("Hour")
host.legend((b1[0], b2[0], p1,p2), ("post","keyword","star/post", 'star-er/post-er'), loc=0, shadow=True)
par.set_ylabel('rate (%)')

xlim(-.25,24)
# save
savefig('%d-%d Stars.png'%(mm,dd))
# 描画
fig.show()

こんな感じで。試行錯誤の初期はなんだかよく分からないけど描画できない事がちょいちょいあったんだけど、原因追及する前にそれが出なくなってしまった…なんだったんだろか…subplotについて今度調べよう。

グラフはこちらのもの

[]iPython 設定 iPython 設定 - 雲雀は高く空を舞い を含むブックマーク はてなブックマーク - iPython 設定 - 雲雀は高く空を舞い iPython 設定 - 雲雀は高く空を舞い のブックマークコメント

.ipython/ipythonrcをいじる

とりあえずいじったのは行間とかの設定だけ

# 入力行を一行あける → あけない
305 # separate_in \n
separate_in 0

#プロンプトをちょっと短縮
# prompt_in1 'In [\#]: '
prompt_in1 '[\#]: '
# prompt_out 'Out [\#]: '
prompt_out '[\#]: '

[]iPython Tips - 変数名とかを確認したり変数を保存したりする iPython Tips - 変数名とかを確認したり変数を保存したりする - 雲雀は高く空を舞い を含むブックマーク はてなブックマーク - iPython Tips - 変数名とかを確認したり変数を保存したりする - 雲雀は高く空を舞い iPython Tips - 変数名とかを確認したり変数を保存したりする - 雲雀は高く空を舞い のブックマークコメント

確認

%who, %whos, %resetを使う。

#とりあえず変数名を確認
%who
a	i

#詳しく確認
%whos
Variable   Type    Data/Info
----------------------------
a          list    [[], [], [], [], []]
i          int     4

#リセットしたい
%reset
Once deleted, variables cannot be recovered. Proceed (y/[n])?  
# yにすれば変数全部削除

保存

store, >, >>などなど。iPythonを終了しても値は保存される。

x = [x/pi for x in arange(34)]

# 保存
store x
Stored 'x' (List)

# 確認
store
Stored variables and their in-db values:
x             -> [0.0, 0.31830988618379069, 0.63661977236758138, 0.

# iPythonを再起動しても保存されている
store
Stored variables and their in-db values:
x             -> [0.0, 0.31830988618379069, 0.63661977236758138, 0.


# load x
store -r x

# stored dataの削除
store -d x

# 全stored dataの削除
store -z

# ファイルに保存
sotre x > listx.txt

# ファイルに追記
sotre x >> listx.txt

便利!だけどファイルに保存した変数を読み込むにはどうしたら良いのかな、無理かな?

[]iPython tips - 引数の括弧が面倒 iPython tips - 引数の括弧が面倒 - 雲雀は高く空を舞い を含むブックマーク はてなブックマーク - iPython tips - 引数の括弧が面倒 - 雲雀は高く空を舞い iPython tips - 引数の括弧が面倒 - 雲雀は高く空を舞い のブックマークコメント

fをlambda式を使ってと定義する。

f = lambda x,y:x**2+y**2

f(x,y)=x^2+y^2

引数についてのちょっとしたTips

# 普通の使い方
In [20]: f(2,3)
Out[20]: 5

# fに続く数字を引数として
In [21]: f 2,3
-------> f(2,3)
Out[21]: 5

# /をつけると,を省略できる
In [22]: /f 2 3
-------> f(2,3)
Out[22]: 5

#,をつけると文字列として引数をとる
In [23]: ,f 1 2
-------> f("1", "2")
Out[23]: '12'

[]matplotlibつかってみた matplotlibつかってみた - 雲雀は高く空を舞い を含むブックマーク はてなブックマーク - matplotlibつかってみた - 雲雀は高く空を舞い matplotlibつかってみた - 雲雀は高く空を舞い のブックマークコメント

f:id:allegro:20091010010008p:image

from pylab import *
import twitter, time
api = twitter.Api(twitterid, twitterpassword)

dd = 9
me = api.GetUserTimeline('allegrovivace','200')
isreply = [time.localtime(x.created_at_in_seconds) for x in me if x.in_reply_to_user_id]
isnotreply = [time.localtime(x.created_at_in_seconds) for x in me if not x.in_reply_to_user_id]

h = [x.tm_hour for x in isnotreply if x.tm_mday==dd]
h0 = []
for x in arange(24):
    h0.append(len([y for y in h if y == x]))

ind = arange(24)
h1=bar(ind, h0, width)

##
r = [x.tm_hour for x in isreply if x.tm_mday == dd]
r0 = []
for x in arange(24):
    r0.append(len([y for y in r if y == x]))

r1=bar(ind+width, r0, width, color='c')
xticks(ind+width, ind)
xlim(-.25,24)

x = arange(24)
y = numpy.ones((24,1))*5
plot(x,y)
y = numpy.ones((24,1))*10
plot(x,y)
y = numpy.ones((24,1))*15
plot(x,y)
legend((h1[0], r1[0]), ('notreply','reply'), loc=0, fancybox=True, shadow=True)

,title allegrovivace\'s_posts
,xlabel hour
,ylabel posts

ヒストリの確認は

%hist

%history

%hist 100

など。%ではじまる予約語がいくつかあるのでなんとかかんとか。%hist?でヘルプが見れたりする。

あと、次の二つは同じ。あたまに「,」をいれないと文字列じゃなくて数字列になる、のかな?

,title allegrovivace\'s_posts
title("allegrovivace\'s_posts")

matlabとほとんど同じに使えるので楽、かな。その割にはチュートリアルがすごく充実してるので、いろいろできるのかも。

あと、backendにQuartz@Mac OS Xが指定できるのはものすごく楽なのではないでしょうか。。。

テクノラティプロフィール