Matplotlibで日本語フォントを使う

gistを使ってみたかったので、Matplotlibで日本語フォントを使うサンプルを上げます。
http://matplotlib.sourceforge.net

#coding:utf-8
"""
matplotlibで日本語フォントを使うサンプル
"""
import matplotlib.pyplot
import matplotlib.font_manager
# for Mac
font_path = '/Library/Fonts/Osaka.ttf'
# for Linux
#font_path = '/home/k01/.fonts/ipag00303/ipag.ttf'
# font_pathが見つからない場合
# RuntimeError: Could not open facefile
# /home/k01/.fonts/ipag00303/ipag.ttf; Cannot_Open_Resource になる
font_prop = matplotlib.font_manager.FontProperties(fname=font_path)
matplotlib.pyplot.title(u'日本語のテストタイトル', fontproperties=font_prop)
matplotlib.pyplot.plot(range(10))
# matplotlib.pyplot.show()だと日本語は正しく表示されない savefigはOK
matplotlib.pyplot.savefig('test.png')

test

Posted: September 28th, 2011 | Author: | Filed under: 技術 | Tags: , , , | No Comments »

47都道府県の地名と座標データ

県ごとのなんとなくな地域と、座標と名前がリストになったものが欲しかったのでまとめました。
天気予報でよく使われる地名と、そこと思しき緯度経度が世界測地系の座標ではいってます。

番号, 県名, 地域名, 地域名英表記, 緯度(latitude), 経度(longitude)

1,北海道,稚内,Wakkanai,45.415664,141.673082
2,北海道,旭川,Asahikawa,43.770636,142.364819
3,北海道,留萌,Rumoi,43.940987,141.637012
4,北海道,札幌,Sapporo,43.062096,141.354376
5,北海道,岩見沢,Iwamizawa,43.196206,141.775933
6,北海道,倶知安,Kutchan,42.901829,140.758698
7,北海道,網走,Abashiri,44.020632,144.273398
8,北海道,北見,Kitami,43.807923,143.894276
9,北海道,紋別,Monbetsu,44.356584,143.354095
10,北海道,根室,Nemuro,43.330076,145.582790
11,北海道,釧路,Kushiro,42.984854,144.381356
12,北海道,帯広,Obihiro,42.923899,143.196103
13,北海道,室蘭,Muroran,42.315231,140.973799
14,北海道,浦河,Urakawa,42.168516,142.768120
15,北海道,函館,Hakodate,41.768793,140.728810
16,北海道,江差,Esashi,41.869156,140.127460
17,青森県,青森,Aomori,40.822072,140.747365
18,青森県,むつ,Mutsu,41.292746,141.183476
19,青森県,八戸,Hachinohe,40.512284,141.488399
20,秋田県,秋田,Akita,39.720008,140.102564
21,秋田県,横手,Yokote,39.311251,140.553159
22,岩手県,盛岡,Morioka,39.702053,141.154484
23,岩手県,宮古,Miyako,39.641420,141.957140
24,岩手県,大船渡,Ofunato,39.081901,141.708530
25,宮城県,仙台,Sendai,38.268215,140.869356
26,宮城県,白石,Shiroishi,38.002478,140.619861
27,山形県,山形,Yamagata,38.255439,140.339602
28,山形県,米沢,Yonezawa,37.922240,140.116781
29,山形県,酒田,Sakata,38.914433,139.836515
30,山形県,新庄,Shinjo,38.765015,140.301608
31,福島県,福島,Fukushima,37.760723,140.473356
32,福島県,小名浜,Onahama,36.949127,140.905353
33,福島県,若松,Wakamatsu,37.891124,140.902856
54,茨城県,水戸,Mito,36.365856,140.471222
55,茨城県,土浦,Tsuchiura,36.071881,140.196023
56,栃木県,宇都宮,Utsunomiya,36.555112,139.882807
57,栃木県,大田原,Otawara,36.871117,140.015499
58,群馬県,前橋,Maebashi,36.389482,139.063428
59,群馬県,みなかみ,Minakami,36.678700,138.999064
60,埼玉県,さいたま,Saitama,35.861729,139.645482
61,埼玉県,熊谷,Kumagaya,36.147310,139.388645
62,埼玉県,秩父,Chichibu,35.991752,139.085428
63,東京都,東京,Tokyo,35.681382,139.766084
64,東京都,大島,Oshima,34.750040,139.355579
65,東京都,八丈島,Hachijōjima,33.102183,139.800510
66,東京都,父島,Chichijima,27.076307,142.213312
67,千葉県,千葉,Chiba,35.607267,140.106291
68,千葉県,銚子,Choshi,35.734681,140.826641
69,千葉県,館山,Tateyama,34.996506,139.869965
70,神奈川県,横浜,Yokohama,35.443708,139.638026
71,神奈川県,小田原,Odawara,35.264564,139.152154
75,山梨県,甲府,Kofu,35.655625,138.567574
76,山梨県,河口湖,Kawaguchiko,35.498239,138.768624
44,富山県,富山,Toyama,36.695952,137.213677
45,富山県,伏木,Fushiki,36.791995,137.057949
46,石川県,金沢,Kanazawa,36.561325,136.656205
47,石川県,輪島,Wajima,37.390590,136.899196
48,福井県,福井,Fukui,36.064067,136.219494
49,福井県,敦賀,Tsuruga,35.645244,136.055441
50,新潟県,新潟,Niigata,37.916192,139.036413
51,新潟県,長岡,Nagaoka,37.436513,138.838921
52,新潟県,高田,Takada,37.115147,138.242209
53,新潟県,相川,Aikawa,38.034547,138.245286
72,長野県,長野,Nagano,36.648550,138.194243
73,長野県,松本,Matsumoto,36.238038,137.972034
74,長野県,飯田,Iida,35.514700,137.821822
34,静岡県,静岡,Shizuoka,34.975562,138.382760
35,静岡県,網代,Ajiro,35.043506,139.081551
36,静岡県,三島,Mishima,35.118403,138.918513
37,静岡県,浜松,Hamamatsu,34.710834,137.726126
38,愛知県,名古屋,Nagoya,35.181446,136.906398
39,愛知県,豊橋,Toyohashi,34.769200,137.391466
40,岐阜県,岐阜,Gifu,35.423298,136.760654
41,岐阜県,高山,Takayama,36.146124,137.252173
42,三重県,津,Tsu,34.718596,136.505698
43,三重県,尾鷲,Owase,34.070799,136.190995
77,滋賀県,大津,Otsu,35.017893,135.854607
78,滋賀県,彦根,Hikone,35.274461,136.259623
79,京都府,京都,Kyoto,35.011636,135.768029
80,京都府,舞鶴,Maizuru,35.474797,135.385992
81,大阪府,大阪,Osaka,34.693738,135.502165
82,兵庫県,神戸,Kobe,34.690083,135.195511
83,兵庫県,豊岡,Toyooka,35.544473,134.820184
84,奈良県,奈良,Nara,34.685087,135.805000
85,奈良県,風屋,Kazeya,34.043799,135.781779
86,和歌山県,和歌山,Wakayama,34.230511,135.170808
87,和歌山県,潮岬,Shiomisaki,33.447709,135.761400
88,岡山県,岡山,Okayama,34.655146,133.919502
89,岡山県,津山,Tsuyama,35.069116,134.004543
90,広島県,広島,Hiroshima,34.385203,132.455293
91,広島県,庄原,Shobara,34.857732,133.017278
92,島根県,松江,Matsue,35.468060,133.048375
93,島根県,浜田,Hamada,34.899303,132.079783
94,島根県,西郷,Saigo,35.434481,132.808143
95,鳥取県,鳥取,Tottori,35.501133,134.235091
96,鳥取県,米子,Yonago,35.428072,133.330945
97,山口県,下関,Shimonoseki,33.957831,130.941459
98,山口県,山口,Yamaguchi,34.178496,131.473727
99,山口県,柳井,Yanai,33.963833,132.101597
100,山口県,萩,Hagi,34.408116,131.399085
101,徳島県,徳島,Tokushima,34.070270,134.554844
102,徳島県,日和佐,Hiwasa,33.728843,134.530636
103,香川県,高松,Takamatsu,34.342788,134.046574
104,愛媛県,松山,Matsuyama,33.839157,132.765575
105,愛媛県,新居浜,Niihama,33.960290,133.283351
106,愛媛県,宇和島,Uwajima,33.223340,132.560558
107,高知県,高知,Kochi,33.558804,133.531168
108,高知県,室戸,Muroto,33.290009,134.152051
109,高知県,清水,Shimizu,32.783389,132.957889
110,福岡県,福岡,Fukuoka,33.590355,130.401716
111,福岡県,八幡,Yahata,33.868904,130.795365
112,福岡県,飯塚,Iizuka,33.645908,130.691511
113,福岡県,久留米,Kurume,33.319287,130.508374
114,大分県,大分,Oita,33.239558,131.609272
115,大分県,中津,Nakatsu,33.598221,131.188325
116,大分県,日田,Hita,33.321333,130.940966
117,大分県,佐伯,Saiki,32.960217,131.899533
118,長崎県,長崎,Nagasaki,32.750286,129.877667
119,長崎県,佐世保,Sasebo,33.179915,129.715110
120,長崎県,厳原,Izuhara,32.744839,129.873756
121,長崎県,福江,Fukue,32.698971,128.846404
122,佐賀県,佐賀,Saga,33.263482,130.300858
123,佐賀県,伊万里,Imari,33.264586,129.880269
124,熊本県,熊本,Kumamoto,32.803100,130.707891
125,熊本県,阿蘇,Aso,32.943445,131.043434
126,熊本県,牛深,Ushibuka,32.194456,130.025727
127,熊本県,人吉,Hitoyoshi,32.210041,130.762554
128,宮崎県,宮崎,Miyazaki,31.907674,131.420241
129,宮崎県,延岡,Nobeoka,32.582317,131.664848
130,宮崎県,都城,Miyakonojo,31.719590,131.061621
131,宮崎県,高千穂,Takachiho,32.711657,131.308028
132,鹿児島県,鹿児島,Kagoshima,31.596554,130.557116
133,鹿児島県,鹿屋,Kanoya,31.378292,130.852077
134,鹿児島県,種子島,Tanegashima,30.593001,130.991363
135,鹿児島県,名瀬,Naze,28.370560,129.501021
136,沖縄県,那覇,Naha,26.228530,127.689110
137,沖縄県,名護,Nago,26.591547,127.977316
138,沖縄県,久米島,Kumejima,26.348886,126.747004
139,沖縄県,南大東島,Minamidaitojima,25.846401,131.244907
140,沖縄県,宮古島,Miyakojima,24.805490,125.281149
141,沖縄県,石垣島,Ishigakijima,24.408388,124.197692
142,沖縄県,与那国島,Yonagunijima,24.456056,122.991428
Posted: August 29th, 2011 | Author: | Filed under: 技術 | No Comments »

ping from EC2 Tokyo, Singapore, California

Amazon EC2の各拠点からpingでいくつか測ってみたところ.

EC2 in Tokyo
home (Tokyo) 3.0ms
facebook.com 123.0ms
twitter.com 116.0ms

EC2 in Singapore
home (Tokyo) 79.0ms
facebook.com 250.0ms
twitter.com 195.0ms

EC2 in California
home (Tokyo) 126.0ms
facebook.com 76.0ms
twitter.com 12.0ms

国内向けサービスならやっぱりTokyo良さそうですが,
外部サービスも考えるとシンガポールが中途半端な選択肢になってしまいそうです.

Posted: March 3rd, 2011 | Author: | Filed under: 技術 | No Comments »

Macを閉じてもスリープさせないInsomnia

Insomnia 最近助かっているアプリです.

insomnia

データ解析中に画面を閉じてしまって, 何度か痛い目にあったので探しました. (サーバでやれという話でもある) DVDやiTunesを閉じたまま再生したり, MacBookをつかった展示などにも良いです.

 
  

Posted: February 28th, 2011 | Author: | Filed under: 技術 | Tags: , , | No Comments »

NLTKのバグ?

最近自然言語処理入門を買ったりしていろいろやっていて気づいたこと。

pythonのnltkをimportした後、”ム”(\xe3\x83\xa0)をstrip()すると\xa0が取り除かれてしまう。通常は\xe3\x83\xa0のままのはず。

Python 2.6.5 (r265:79063, Apr 12 2010, 01:06:47)
[GCC 4.2.1 (Apple Inc. build 5646) (dot 1)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.getdefaultencoding()
'utf-8'
>>> s='ム'
>>> s
'\xe3\x83\xa0'
>>> s.strip()
'\xe3\x83\xa0'
>>>s.strip().decode('utf-8')
u'\u30e0'
>>> import nltk
>>> nltk.__version__
'2.0b9'
>>> s
'\xe3\x83\xa0'
>>> s.strip()
'\xe3\x83'
>>> sys.getdefaultencoding()
'utf-8'
>>>s.strip().decode('utf-8')
UnicodeDecodeError: 'utf8' codec can't decode bytes in position 0-1: unexpected end of data

2011/2/7 追記
Python2.7.1だと大丈夫だった

Python 2.7.1 (r271:86832, Feb  7 2011, 12:54:42) 
[GCC 4.2.1 (Apple Inc. build 5664)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.getdefaultencoding()
'utf-8'
>>> s='ム'
>>> s
'\xe3\x83\xa0'
>>> s.strip()
'\xe3\x83\xa0'
>>>s.strip().decode('utf-8')
u'\u30e0'
>>> import nltk
>>> nltk.__version__
'2.0b9'
>>> s
'\xe3\x83\xa0'
>>> s.strip()
'\xe3\x83\xa0'
Posted: February 7th, 2011 | Author: | Filed under: 技術 | Tags: , | No Comments »

RMeCabをMacにいれた

R0011581.JPG

作業につまったので、ブログでも書こう。

形態素解析のエンジンのMeCabをRから使えようにする。
ちょうど買った本の著者がRMeCabの開発者の方だった。

RMeCab_0.93は旧バージョンのRでは動かなかったので新しいR-2.12.1.pkgにアップデートした。

R 2.12.1 for Mac

http://essrc.hyogo-u.ac.jp/cran/bin/macosx/R-2.12.1.pkg

RMeCab 0.93

http://rmecab.jp/wiki/index.php?plugin=attach&refer=SoftArchive&openfile=RMeCab_0.93.tgz

Rを起動後

> setwd('Downloads')
> install.packages("RMeCab_0.93.tgz")
ファイル名から 'repos = NULL' を推測
> library(RMeCab)
> RMeCabC(("RMeCabをMacにインストールしたよ"))

[[1]]
    名詞
"RMeCab"

[[2]]
助詞
"を"

[[3]]
 名詞
"Mac"

[[4]]
助詞
"に"

[[5]]
          名詞
"インストール"

[[6]]
動詞
"し"

[[7]]
助動詞
  "た"

[[8]]
助詞

"よ" 

参考にさせていただきました。
[R][MeCab][自然言語処理]MeCabとRMeCabをインストールして、ちょっと遊んでみる

Posted: January 18th, 2011 | Author: | Filed under: 技術 | Tags: , , | No Comments »

東京-神戸-長崎 スカイマーク

スカイマークエアラインズが、去年の12月から羽田-神戸-長崎便を出すようになったらしい。
28日前予約の最安が長崎、熊本、鹿児島は5,800円、沖縄は7,800円になってる。

実家に帰るときは今までSNA(スカイネットアジア)の割引チケット11,000円-15,000円を買っていたけど、これは28日前に予約を確定しなければいけなかった。僕の場合、ここ数年の帰省はほぼ釣り合宿なので1ヶ月前に状況を予想してチケット取っても、台風とか気候が全く読めなくて泣くことが数知れず。かといって普通料金は35,000円くらいするのでとても手が出なかった。

スカイマークエアラインズは、羽田から神戸で乗り換えて長崎に降りる便になってる。明後日、1月7日の場合、普通運賃が12,800円で、時間と予約状況で変動するようだけど15,000円も出せば好きなときに帰れそう。神戸を経由するのでフライトが180分くらいになるけど(スカイネットは120分)、明日にでも実家に帰れるというのが、ほんとにありがたいです。なくならないで欲しい。

こういうタイミングと予約状況によって運賃が変動していく航空券は、海外ではよくあるらしい。

以前読んだ 「その数学が戦略を決める」 のなかで、こういう航空券の価格変動を予測するForecastの話があった。ワシントン大学の計算機科学教授が、どのタイミングでチケットを買うと安くなるかを予測すべく作ったWebサービスで、いま調べてみたら2年前にMicrosoftに買収されてBing Travelになってた。 マイクロソフト、Farecastを$115Mで買収

その数学が戦略を決める(文庫版) p71

Farecastは予測に115の因子を使い、それを毎日更新して全ての路線に予測を見直す。過去の価格変動だけをみるのではなく、航空券の需要や供給を支える各種の要因 –たとえば燃料価格や気候やフットボールの優勝チームなど– も見ている。スーパーボールの出場選手がかわるだけでも差が出てくる。そしてそこから価格上昇が予測されると上向き矢印、低下が予測されれば下向き矢印が表示される。

いまのところ日本では価格変動しないチケットが多いけど、そのうち変わってくるのでしょう。
日本版のFarecastっぽいものは自分用に作れそうな気がする。

Posted: January 5th, 2011 | Author: | Filed under: outdoor, 技術, | Tags: , , , | No Comments »

Running Hadoop in Standalone Mode

CentOS5 MacBookPro VMWare

SSH setup

% ssh-keygen -t dsa
% cat ~/.ssh/id_dsa.pub >> authorized_keys
% chmod 600 ~/.ssh/authorized_keys

JDK6 Install
Download http://www.oracle.com/technetwork/java/javase/downloads/index.html

% chmod +x jdk-6u23-linux-i586.bin
% ./jdk-6u23-linux-i586.bin
% sudo cp -r jdk1.6.0_23 /usr/local/jdk1.6.0_23
% sudo ln -s /usr/local/jdk1.6.0_23 /usr/local/jdk
% export PATH=$PATH:/usr/local/jdk/bin

Hadoop Install

% wget http://www.meisei-u.ac.jp/mirror/apache/dist//hadoop/core/hadoop-0.21.0/hadoop-0.21.0.tar.gz
% tar -zxvf hadoop-0.21.0.tar.gz
% sudo cp -r  hadoop-0.21.0 /usr/local/hadoop-0.21.0
% sudo ln -s /usr/local/hadoop-0.21.0 /usr/local/hadoop
% export PATH=$PATH:/usr/local/hadoop/bin

Hadoop Setup
/usr/local/hadoop/conf/hadoop-env.sh

export JAVA_HOME=/usr/local/jdk

/usr/local/hadoop/conf/core-site.xml
/usr/local/hadoop/conf/hdfs-site.xml
/usr/local/hadoop/conf/mapred-site.xml
Standalone Mode

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
 <property>
    <name>fs.default.name</name>
    <value>hdfs://localhost:9000</value>
  </property>
</configuration>

Format HDFS

% /usr/local/hadoop/bin/hadoop namenode -format

Start and Kill Hadoop

% /usr/local/hadoop/bin/start-all.sh
% /usr/local/hadoop/bin/stop-all.sh

Start MapReduce
Copy from access_log.txt on local disk to HDFS

% hadoop fs -copyFromLocal access_log.txt /yamakk/log_input.txt
% hadoop fs -ls /yamakk

MapReduce
Sort URLs by number of access

% hadoop jar /usr/local/hadoop/hadoop-mapred-examples-0.21.0.jar grep /yamakk/log_input.txt /yamakk/log_out "GET (\\S+)" 1

check /yamakk/log_out/part-r-00000

Posted: December 30th, 2010 | Author: | Filed under: 技術 | Tags: | No Comments »

Install Scala (macports)

Scalaの本を立ち読みしてたら面白そうだったので、インストールしてみた。対話モードがあるのがPython使いとしてはとっつきやすそうな気がする。

実利的な目標を設定して勉強すると、だいたいは「Pythonで書いたほうが早いぜ」となって触らなくなるので、言語を楽しむバランスを忘れずにいじろうかと思います。

$ sudo port install scala-27
$ scala-2.7 
Welcome to Scala version 2.7.7.final (Java HotSpot(TM) 64-Bit Server VM, Java 1.6.0_22).
Type in expressions to have them evaluated.
Type :help for more information.
object HelloScala{                                                                               
       def main(args : Array[String]){                                                             
           println(98L-1L)                                                                         
           println("compiled hello")                                                               
           println("日本語はとおるのか")                                                           
           }                                                                                       
} 
$scalac-2.7 helloc.scala
$scala-2.7 HelloScala
97
compiled hello
日本語はとおるのか
Posted: December 20th, 2010 | Author: | Filed under: 技術 | Tags: | No Comments »

Delicious から Google Bookmarks

delicious_shutting_down

虫の知らせか、4年使っていたDeliciousを先月 Google Bookmarks に移行した。最初 del.icio.us to Google Bookmarks というツールを試したら動かなかったので、Firefoxの機能拡張を使った。いわゆるyak shavingな引越しメモです。

以下のやりかただと、DeliciousでつけたタグはGoogle Bookmarksのラベル(=タグ)に移行できない。ただ、Google Bookmarksの場合Webページの中身の単語を対象に検索できるので、ラベルがなくても困らない。むしろラベルに分けてしまうと、検索対象が自動的にアクティブなラベルに絞られるので、分けない方が使い勝手は良い気がする。

  1. Delicious.comからExport / Download Your Delicious Bookmarksでブックマークをexportするdelicious-20101217.htmlのようなファイルがダウンロードできる
  2. Firefoxの”Organize Bookmarks”から”Import HTML”を選びdelicious-20101217.htmlをインポートする
  3. GMarksをつかって”Organize Gmarks”のメニューからFile>Exportを選びGoogle Bookmarksに同期

だったはず。

今更自分にとって、del.icio.usの何がよかったのだろうと考えたら、名前だったような気がする。deliciousという響きが、多くのユーザに”deliciousなサイト”をブックマークさせていた気がするし、はてなブックマークにネガティブなタグが多いのは、”はてな”という響きもすこしは関係しているのかなと思っている。あくまで無意識のレベルで。

Posted: December 17th, 2010 | Author: | Filed under: 技術 | Tags: , , | No Comments »