gruff
2013年11月1日あたりに書いていたと思われるメモ。
About gruff
gruff は、いろいろなタイプの美しいグラフ画像を作成できる gem。 github の readme の中にサンプル画像が載っているのだけれど、かっちょよいかんじだと思う。
リポジトリの test ディレクトリに数多くのコードサンプルがあり、それらの結果が test ディレクトリ中の output ディレクトリにある。
Type of graph
16種類あるらしい。
グラフにそんな詳しくないが普通に使う分には十分であると思う。
中には、In progress!と書いてあるものもあり不安定なグラフもあるらしい。
- Accumulator bar chart
- Area chart
- Bar chart
- Bezier chart
- Bullet chart
- Dot chart
- Line chart
- LineXY chart
- Net chart
- Pie chart
- Scatter chart
- Side bar chart
- Side stacked bar chart
- Spider chart
- Stacked area chart
- Stacked bar chart
Documentation
http://www.rubydoc.info/github/topfunky/gruff/frames
Installation
gem install gruff
Arch Linux だと rmagick のインストールに失敗する。pacman で imagemagick をインストールするも、HDRI が有効な ImageMagickだと怒られる。Arch Linux では、ImageMagick が HDRI を有効にしてビルドされるらしい。たぶん最近、そうなったぽい。rmagick の github の issue でもこれに関するものが挙がっていたり、pull-request があったりした。
HDRI とは…。
abs を利用して自分で ImageMagick をビルドしようかと思ったが、AUR に imagemagick-no-hdri みたいなパッケージがあったのでそれで入れている。結局ビルドはするんだけど。
再び、gem i gruff するとインストールできた。
Try
折れ線グラフが必要なので、まずそれから試す。
Gruff::Line クラスを使えばよさそうだ。
各タイプ毎に Gruff::Line のようなクラスが用意されていて、それらは Gruff::Base を継承している。わかりやすい。
attributes
- title: グラフのタイトル
- labels: 横軸
methods
- data: グラフのデータのセット
- write: グラフ画像の書き出し
- theme: 色の変更
readme のサンプルと Gruff::Line のドキュメントのサンプルを試した。
どうやって背景なんかのテーマを変更するんだろう。テーマの種類は?自分で色を設定できたりする?
theme メソッドがあった。ハッシュなオプションを渡してあげられるっぽい。colors、marker_color、font_color、background_colors などがある。 theme メソッドのコードをみてみると、colors、additional_line_colors、marker_color、font_color、background_color、background_image があった。
こういうオプションを取るメソッドは、中でデフォルトのオプションを持っておいて渡された引数と merge するというかんじだ。
なんか
- theme_37signals
- theme_greyscale
- theme_keynote
- theme_odeo
- theme_pastel
- theme_rails_keynote
みたいなメソッドがあって、プリセットみたいなかんじだと思う。 つまり、デフォルトがなんかのかわからんが、テーマは6種類あって、theme メソッドを使えば自分で色を設定できるんだろう。
試してみたらデフォルトは、theme_keynote だった。
コンストラクタに、数値を渡したらグラフのサイズを変えることができるっぽい。
基本的なグラフを作成する流れとしては、
- インスタンスをつくる
- そのインスタンスを使って、いろいろと設定する
- data メソッドを使ってデータを投入する
- write メソッドでグラフ画像を吐き出す
になる。
凡例やらタイトルやらは消すこともできる。
テストがしっかり書かれているので、といってもテストではなく、いろいろなパターンのグラフ画像を生成しているだけなんだけど、それを読むだけでもいろいろわかるのでテストコードを読むのがいいっぽい。いっぱいあって疲れるけど。