Ruby でグラフ描く GR.rb をつかってみた(がんばって日本語を表示する手順)
今まで Ruby で PyCall を呼んで matplotlib でグラフ描いてたんですが、GR.rb っていうのができたらしいので使ってみました。
インストール
$ brew install libgr $ export GRDIR=$(brew --prefix libgr)
または、https://github.com/sciapp/gr/releases からも落とせる。環境変数 GRDIR
の設定を忘れずやる。
サンプルを描画してみる
Wiki にいくつかサンプルが載っている。ためしに棒グラフを描画してみる。
require "gr/plot" continents = ["Africa", "America", "Asia", "Europe", "Oceania"] population_2010 = [1044, 944, 4170, 735, 36] GR.barplot(continents, population_2010, title: "Population 2010") gets
良さそう!
日本語のテキストを表示する
グラフに日本語を出したいことが多い、というかほとんどの場合日本語で出したいので、これもやってみます。
require "gr/plot" continents = ["アフリカ", "アメリカ", "アジア", "ヨーロッパ", "オセアニア"] population_2010 = [1044, 944, 4170, 735, 36] GR.barplot(continents, population_2010, title: "2010年の人口") gets
なんてすてきな豆腐!
手順① GR をいじる
GR.rb には任意のフォントを指定する機能がなさそうだったので、GR をいじりました。
# ソースを手元に用意する $ git clone git@github.com:sciapp/gr.git # まず、普通にビルドできるかどうか確認する $ make GRDIR=/tekitouna/tokoro/ $ make install
次に、lib/gks/fonts
に好きなフォントを置きます。pfg と ttf が使えるみたいです。今回は Ricty-Regular.ttf を置いてみます。
js/Makefile
にファイル名を追加します。
# 73行目付近 fonts: mkdir fonts - cp -p $(GKSDIR)/fonts/CMUSerif-Math.ttf $(GKSDIR)/fonts/DejaVuSans.ttf $(GKSDIR)/fonts/gksfont.dat fonts/ + cp -p $(GKSDIR)/fonts/CMUSerif-Math.ttf $(GKSDIR)/fonts/DejaVuSans.ttf $(GKSDIR)/fonts/Ricty-Regular.ttf $(GKSDIR)/fonts/gksfont.dat fonts/ ... # 97行目付近 libGR.js: $(OBJS) $(LIBS) library.js fonts $(CC) $(OPTS) $(DEFINES) \ - --embed-file fonts/gksfont.dat --embed-file fonts/CMUSerif-Math.ttf --embed-file fonts/DejaVuSans.ttf \ + --embed-file fonts/gksfont.dat --embed-file fonts/CMUSerif-Math.ttf --embed-file fonts/DejaVuSans.ttf --embed-file fonts/Ricty-Regular.ttf \
lib/gks/ft.c
にも追加します。
# 67行目付近 const static FT_String *gks_font_list_ttf[] = { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, "CMUSerif-Math", - "DejaVuSans"}; + "DejaVuSans", "Ricty-Regular"}; ... # 320行目付近 static int gks_ft_convert_textfont(int textfont) { textfont = abs(textfont); - if (textfont >= 201 && textfont <= 233) + if (textfont >= 201 && textfont <= 234)
これで make
して、GR.rb で使うために、環境変数も自分でビルドしたほうに設定しておきます。
$ make install $ export GRDIR=/tekitouna/tokoro/
手順② GR.rb にモンキーパッチを当てる
https://github.com/red-data-tools/GR.rb/blob/3667b2226b7390c14bceee93d453bd9de94ebdcb/lib/gr/plot.rb#L567 の GR.settextfontprec(232, 3)
を書き換えたいのでモンキーパッチを書きます。plot_data
メソッドは長いですが変えたいのは 1 行だけです。
module GRExtention def plot_data(_figure = true) ... # ここの数字を、さっき追加したフォントの番号に変える GR.settextfontprec(234, 3) ... end end module GR class Plot prepend GRExtention end end
パッチを呼んで実行すると……
require "gr/plot" require "./gr_extension.rb" continents = ["アフリカ", "アメリカ", "アジア", "ヨーロッパ", "オセアニア"] population_2010 = [1044, 944, 4170, 735, 36] GR.barplot(continents, population_2010, title: "2010年の人口") gets
やったー!
感想
前処理とか Ruby で書くほうが慣れてるので、データを用意してそのままグラフが書けるのはうれしい。あとはフォントサイズ変えるのとか軸ラベルを回転させるとか欲しいなぁと思っている。
簡易バ美肉をした記録
バ美肉って呼んでいいのかわからないんですが、とにかく、前々から気になっていた「かわいいアバターで通話する」をやってみました。そこそこ簡単にできてたのしかったです。
ツール
ぼくは普通に一般人です。誤家庭の床から機材がいっぱい生えてるタイプの逸般人じゃないので、特にそういう専用のカメラとかは持ってないです。あるのはAndroidのスマホとmacOSのPCだけ。ということで、
① REALITY - アバターを作って動かす
VTuberのための配信アプリです。ちょっと前に聞いたことがあって、今回使えそうだなと思って採用しました。配信するつもりはないので、プレビュー機能(?)だけを使います。
まずはアバターを作ります。この時点でリアルタイムに頭・目・口を動かせるので楽しいです。目は片目ずつウインクできるし、口はにっこり・ア・イ・オくらいならできます。眼鏡をかけていても大丈夫。背景はGBとかBBにしておきます。素材感たまらないですね。
アバターができたら、フッターの赤い配信ボタンを押します。押してもまだ配信はされないので大丈夫です。
以降は、この配信プレビュー画面(?)みたいな画面をキャプチャしていきます。下に出てるボタン群は、画面の適当な場所をタップすると消えてくれます。この子かわいいですね。ぼくもこんなにかわいく生まれたかった。もう鏡を見れない
② ApowerMirror - スマホ画面をPC画面にミラーリングする
スマホとPCそれぞれにインストールします。スマホ-PC間の接続は、Wi-FiとUSBが選べます。
下の画像は、PC画面のようすです。スマホっぽい枠とロゴが入ってなんともダサい。最初はこのウィンドウごとDiscordで配信してたんですが、やっぱりダサいなぁと思っていたところ、次に紹介するOBSの存在を教えてもらいました。
③ OBS - 背景をいい感じにする
ApowerMirrorの枠を消して背景をつけます。
まず、配信画面にアバターを表示します。ソース > ウィンドウキャプチャ
で [ApowerMirror] ApowersoftMirror
を選択します。この時点でなんでかロゴが消えてくれててうれしい。ロゴだけは別ウィンドウで、上から重ねてる扱いなのかな?
次に枠を消します。いまのソースを右クリックして出てくるメニューの フィルタ
から、エフェクトフィルタ > + > クロップ/パッド
を追加し、枠をうまくクリッピングできる値に調整します。
次はクロマキー処理です。先ほどと同様に エフェクトフィルタ > + > クロマキー
を追加して、色キーの種類や類似性の値をいじります。類似性の値が適切でないと、髪の毛に緑の苔が生えたりします。
枠を消してクロマキー処理を終えたところです。赤枠をいじって好みの配置・大きさにします。
最後に背景を追加します。ソース > 画像
から好きな画像を選びます。後から追加されたソースが上に重なるようになっているので、適当に調整します。他には任意のテキストなんかも入れられます。んまっかわいい! 一連の画像をキャプチャするにあたって本人が柄にもなくウインクしたり頑張ってるのうわキツ……応援ください!
④ Discord - 配信する
OBSの画面を右クリックすると出てくる ウィンドウプロジェクター
のウィンドウをDiscordで配信します。
左が本人をうつしているスマホ、右がPC側のApowerMirror、中央がDiscordのLive画面です。本人-スマホ間はズレが1秒未満ですが、OBSを挟んでDiscordのLive画面を見ると2秒くらいズレてますね。しゃーない
感想
俺的おすすめ作業用BGMリスト
歌が入ってるとそっちに気を取られてしまうので、なるべく人が歌ってないやつを聴いています。知ってる曲のほうが安心するので、アニメのサントラとかを選ぶことが多いです。余談ですが、サウンドトラックのことをサウトラじゃなくてサントラと略すのは面白いですね。ウがンになる例は他にもあるんだろうか。
このリストは随時更新する予定です。
おとなしめ
ロード・エルメロイⅡ世の事件簿 -魔眼蒐集列車 Grace note- Original Soundtrack
音楽の素養がないのでシンプルだと感じるんですが、実際シンプルじゃないんだと思う。おとなしいだけじゃないところが大好きです。最近これしか聴いてない。
ロード・エルメロイII世の事件簿 -魔眼蒐集列車 Grace note- Original Soundtrack
- アーティスト:ロード・エルメロイII世の事件簿
- 出版社/メーカー: アニプレックス
- 発売日: 2019/09/04
- メディア: CD
ご注文はうさぎですか? ORIGINAL SOUNDTRACK
おとなしめのBGMといえばカフェ、カフェといえばごちうさです。
ご注文はうさぎですか? ORIGINAL SOUNDTRACK
- アーティスト:(アニメCD)
- 出版社/メーカー: NBCユニバーサル・エンターテイメントジャパン
- 発売日: 2014/12/25
- メディア: CD
ご注文はうさぎですか?? ORIGINAL SOUNDTRACK
- アーティスト:(アニメCD)
- 出版社/メーカー: NBCユニバーサル・エンターテイメントジャパン
- 発売日: 2015/12/25
- メディア: CD
ペルソナ3フェス オリジナル・サウンドトラック
あとで挙げるP4とかP5のサントラと比較したら、P3はおとなしいタイプのおしゃれ感があります。
けものフレンズぱびりおんのBGM
こんなツイートを発掘したのでたぶんそうなんだと思います。今はこのゲームやってないので、もしかしたら変わってるかもしれない。
ぱびりおん、基本的に放置してたらいいし、BGMが鳥のさえずりなので、作業のお供に最適
— やましー (@yamasy1549) 2018年1月26日
気分をアゲアゲにしたいとき
ダンガンロンパ オリジナルサウンドトラック
ダンガンロンパは履修してないけど曲がかっこいいので聴いています。考え事をするのには向いてないけど、やること決まっててやるだけ状態、スピード出していくぞってときに向いています。
ペルソナ2 罪×罰 サウンドコレクションvol.6
サトミタダシカダスマンダラ店 【罰】でびっくりして完全に集中力が切れてしまったが、ポモドーロテクニック(適当な時間を決めて、時間が来たら集中モードと休憩モードを交代するやつ)だと思えば良いかもしれない。
ペルソナ4 オリジナル・サウンドトラック
むかしこれを布教されてまんまとハマってしまった。カッコよさとダウナーな感じのバランスが良い。
『ペルソナ5』 オリジナル・サウンドトラック
こんなん良いに決まってるやんな。アニメ見てたのでそのときのドキドキ感とか思い出しますね。
外界の音をシャットアウトしたいとき
Camellia曲全般
すべての曲を聞いたわけではないのに全般と言っていいのか? ハズレを引いたことがないので多分大丈夫。とりあえずAmazon Music にある一番新しいやつを貼ってますが、この中では Σtealth-Δash が好きです。
もういっこ貼っとこ。暴力的な曲も好きです。R U Still xxxx? とか。
ウォーキングのとき
ガールズ & パンツァー オリジナル・サウンド・トラック
Disk2の各校テーマ曲が良い。パンツァー・リートが好きです。
TVアニメ『ガールズ&パンツァー』オリジナルサウンドトラック
- アーティスト:TVサントラ,カチューシャ(金元寿子),佐咲紗花,ChouCho,あんこうチーム(西住みほ(渕上舞)、武部沙織(茅野愛衣)、五十鈴華(尾崎真実)、秋山優花里(中上育実)、冷泉麻子(井口裕香)),ノンナ(上坂すみれ)
- 出版社/メーカー: ランティス
- 発売日: 2012/12/26
- メディア: CD
ガールズ & パンツァー劇場版 オリジナルサウンドトラック
人類みんな Säkkijärven polkka 大好きなの知ってるからな。