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 だった。

コンストラクタに、数値を渡したらグラフのサイズを変えることができるっぽい。

基本的なグラフを作成する流れとしては、

  1. インスタンスをつくる
  2. そのインスタンスを使って、いろいろと設定する
  3. data メソッドを使ってデータを投入する
  4. write メソッドでグラフ画像を吐き出す

になる。

凡例やらタイトルやらは消すこともできる。

テストがしっかり書かれているので、といってもテストではなく、いろいろなパターンのグラフ画像を生成しているだけなんだけど、それを読むだけでもいろいろわかるのでテストコードを読むのがいいっぽい。いっぱいあって疲れるけど。