食べログとGoogleマイマップで,おいしい飲食店マップを作る
引っ越したので,外食エクスペリエンス向上のためにおいしい飲食店マップを作る。
食べログ使えばいいんでないの?
食べログはもとから地図ベースで飲食店を探す方法を提供している。
だけど、モバイルからランキングベースで見るにはプレミアム会員になる必要がある。 基本的に地図ベースで見たい時というのは、外にいて「近くにおいしい店ないかな〜」というときなので、モバイルから見れないのは困る。というかそれがわかっていてプレミアム会員限定にしてるんだろうけど。やるじゃん食べログ。
一応,別の手段もある。食べログには「行った・行きたい」お店を登録しておく機能がある。それに関してはモバイルからも地図ベースで見ることができる。 じゃあ「PCからランキング検索して,ひたすら「行った・行きたい」ボタンを押せばいいんじゃないか」となるかというとそうでもない。なぜなら面倒くさいから。
ということで僕はGoogleスプレッドシートとマイマップを活用して地図を作ることにした。
※ 一応,マイマップにインポートするからこそできることっていうのもあるし、実際便利です
食べログランキングからおいしい飲食店マップを作る
地図作成のざっくりとした流れは
という感じ。
1. Googleスプレッドシートに食べログランキング情報をインポートする
IMPORTXML
関数を駆使して食べログのランキングをスクレイピングする。
で、できたのがこれ。
さらにこれを加工する。
GoogleマイマップはIMPORTXML
など動的に値を取得する系の関数があるとうまくインポートしてくれないので、これを値だけコピーしたシートを作る。
2. Google マイマップにスプレッドシートの情報をインポートする
手順省略(簡単なので)
できたのはこんな感じ
マイマップの良い・残念なところ
良いところ
マーカの色分けがカスタマイズできる
ジャンルや評価の値別にマーカの色を分けることができる。
上の画像では評価値別にマーカの色をわけている。
食べログの地図も評価値別に色をわけてくれるけど,僕は色弱なので見分けづらくて困っていた。
Googleマイマップはわりと色相や明度がくっきりわかれるので助かっている。
レイヤを分けられる
僕は手間だからやっていないけれど、レイヤ別にインポートすると、特定のレイヤのお店だけを表示することができる。
例えば、ジャンル別にレイヤを作ってラーメン屋だけを表示するとか、評価別にレイヤを作って一定評価のお店だけを表示するとか。
営業日別にレイヤを作るのも便利かもしれない。
残念なところ
モバイル版ではURLがリンクされない
マイマップのアプリから食べログのアプリを起動できるよう,食べログのURLを登録してあるのだけど、モバイル版ではURLからリンクを貼ってくれない。
ここだけ残念。PC版ではリンクされるので、今後改善されることを願う。
参考
gnuplotで値域の小さい離散値のヒートマップを書く
こういうやつを書きます
まず単一のヒートマップを書きましょう.
set datafile separator "\t" plot 'mat1.tsv' matrix rowheaders columnheaders using 1:2:3 with image
mat1.tsv
の中身はこんな感じ
あ い う a 1 2 3 b 2 1 3 c 0 1 0
こんなやつが書けるはずです.
x軸のラベルが文字化けしているので直します
set terminal aqua font "HiraKakuPro-W3, 11"
ヒラギノが使えるかどうかは各自の環境によります. gnuplotで扱えるフォントの環境設定は以下を参考にしました.
gnuplotのインストールと設定 | monkeying11
配色がキモいのと,0,1,2,3の4つの値しかないのにカラーバーが連続していて無駄なので直します.
set palette maxcolors 4 set palette defined (0 '#ffffff', 1 '#bbbbbb', 2 '#999999', 3 '#666666')
目盛の値を0,1,2,3にするのと,目盛の位置を各色の中央に持っていきます
set cbtics -0.325, 0.75 # -0.325の位置(画面には描画されない)から0.75間隔で目盛を置く set cbtics scale 0 # 目盛のちょんちょんを消す set cbtics ('0' 0.425, '1' 1.175, '2' 1.925, '3' 2.675) #J, '4' 3.6) # 目盛の値を書き換える
良さ気
これを並べるにはmultiplot
を使います.
普通にmultiplotするとこんな感じになります.(違う値のグラフを並べていることに注意)
set terminal aqua font "HiraKakuPro-W3, 11" set multiplot layout 1,2 set datafile separator "\t" ##### draw left heatmap set palette maxcolors 4 set palette defined (0 '#ffffff', 1 '#bbbbbb', 2 '#999999', 3 '#666666') set cbtics -0.325, 0.75 set cbtics scale 0 set cbtics ('0' 0.425, '1' 1.175, '2' 1.925, '3' 2.675) #J, '4' 3.6) plot 'mat1.tsv' matrix rowheaders columnheaders using 1:2:3 with image ###### draw right heatmap set palette maxcolors 5 set palette defined (0 '#ffffff', 1 '#bbbbbb', 2 '#999999', 3 '#666666', 4 '#000000') set cbtics -0.4, 0.8 set cbtics ('0' 0.4, '1' 1.2, '2' 2.0, '3' 2.8, '4' 3.6) plot 'mat2.tsv' matrix rowheaders columnheaders using 1:2:3 with image
わかりやすいように丸で囲ってるんですが,なぜかplotコマンドの引数が出てきちゃってるので消します.
unset key
なぜkeyとして引数が出るのかは謎,非常にわかりずらい.
gnuplotで実行したコマンドのテキストがなぜかcanvas内に描画されてて,原因調べても出てこなくて半泣きになってたら,実はそれがkey扱いで表示されているということに気づいて発狂してる
— 優秀な同期 (@sakuna63) 2015, 12月 22
左のグラフのカラーバーと,右のグラフの縦軸のラベルは無駄なので消します.
##### draw left heatmap 〜中略〜 unset colorbox 〜中略〜 ###### draw right heatmap 〜中略〜 set colorbox unset ytics 〜中略〜
左側のグラフを書くときに設定した内容が右側のグラフを書くときにも引き継がれてしまうので,右側のグラフを書くときにset colorbox
で改めてカラーボックスを表示するように設定します.
こうなる
わかりづらいんですけど,左側のグラフの横幅が大きくなっています. gnuplotは横軸いっぱいに描画しようとするので,カラーボックスを消したぶん広がっちゃってるわけですね. これをゴリゴリいじります.
##### draw left heatmap 〜中略〜 set size 0.20,1 set origin 0.28,0 〜中略〜 ###### draw right heatmap 〜中略〜 set size 0.24,1 set origin 0.47,0 〜中略〜
カラーボックスが細すぎるのでさらにいじる
set colorbox user size .03,.922 origin .65,.056 set size 0.18,1 # カラーボックスをいじると,サイズが変わってしまうのでごちゃごちゃする
最終的なコードの全体
set terminal aqua font "HiraKakuPro-W3, 11" set multiplot layout 1,2 unset key ##### draw left heatmap set palette maxcolors 4 set palette defined (0 '#ffffff', 1 '#bbbbbb', 2 '#999999', 3 '#666666') set cbtics -0.325, 0.75 set cbtics scale 0 set cbtics ('0' 0.425, '1' 1.175, '2' 1.925, '3' 2.675) #J, '4' 3.6) unset colorbox set size 0.20,1 set origin 0.28,0 set datafile separator "\t" plot 'mat1.tsv' matrix rowheaders columnheaders using 1:2:3 with image ##### draw right heatmap set palette maxcolors 5 set palette defined (0 '#ffffff', 1 '#bbbbbb', 2 '#999999', 3 '#666666', 4 '#000000') set cbtics -0.4, 0.8 set cbtics ('0' 0.4, '1' 1.2, '2' 2.0, '3' 2.8, '4' 3.6) set colorbox unset ytics set colorbox user size .03,.922 origin .65,.056 set size 0.18,1 set origin 0.47,0 plot 'mat2.tsv' matrix rowheaders columnheaders using 1:2:3 with image unset multiplot
おしまい
風邪
鼻水が止まらない。 鼻毛を抜きまくったのが原因な気がする。反省している。