概要
Ruby の gruff というライブラリを使ってグラフの描画を行ってみました
中身は ImageMagick を使っています
環境
- macOS 10.14.2
- Ruby ruby 2.5.1p57
- imagemagick 6.9.10-14
ImageMagick インストール
brew install imagemagick@6
brew link --force imagemagick@6
RaspberryPi の場合は
apt -y install libmagickcore-dev libmagickwand-dev
gruff インストール
bundle init
vim Gemfile
gem "gruff"
bundle install --path vendor
Getting Started
とりあえずサンプルを丸パクリして動かしてみます
- vim app.rb
require 'gruff'
g = Gruff::Line.new(400)
g.title = 'Transparent Background'
g.theme = {
:colors => %w(black grey),
:marker_color => 'grey',
:font_color => 'black',
:background_colors => 'transparent'
}
g.labels = {
0 => '5/6',
1 => '5/15',
2 => '5/24',
3 => '5/30',
}
g.data(:apples, [-1, 0, 4, -4])
g.data(:peaches, [10, 8, 6, 3])
g.write('line_transparent.png')
open line_transparent.png
Gruff::Line.new(400)
で width=400
の折れ線グラフを作成します
title
はその名の通りタイトルを設定します
thema
でグラフの色や背景の色を設定することができます
色はカラーコードでも指定可能です
:background_colors => 'transparent'
にすると背景を透過にできます
colors
は data
で追加した分配列で指定すると折れ線グラフの色をそれぞれ指定できます
marker_color
は横に引かれている軸の線の色を指定することができます
font_color
はタイトルや軸の文字色を設定することができます
labels
は横軸のデータを指定します
0 からインデックスを初めてデータ分だけインクリメントして設定します
data
はグラフを描画するためのデータです
データの名前を指定したあとにプロットするデータを配列で指定します
あとは write
すればグラフが png 形式で出力されます
その他のパラメータ
hide_title = true
タイトルを非表示にできます
legend_font_size = 12
data で指定した名前は凡例として表示されます
その凡例のフォントサイズを指定できます
marker_font_size = 16
縦横軸のラベルのフォントサイズを指定します
hide_dots = true
折れ線グラフなどでデータのプロット部分にドットを打つかどうか指定できます
y_axis_increment = 1
縦軸の増加分を指定できます
g.reference_line_default_width = 1
g.reference_lines[:baseline] = { :value => 5 }
g.reference_lines[:little] = { :value => 3 }
g.reference_lines[:horiz_one] = { :index => 1, :color => 'green' }
g.reference_lines[:horiz_two] = { :index => 3, :color => 'green' }
特定の縦 or 横軸に点線を引くことができます
reference_line_default_width
は点線の太さです
reference_lines[:baseline]
などで点線の種類を指定できます
value => 5
と指定することで縦軸の 5 の値のところに点線を引くことができます
reference_lines[:horiz_one]
を指定することで横軸に点線 (縦線) を引くことができます
ちなみに reference_lines[:baseline]
は baseline_value = 10
でも代用できます
g.theme_37signals
テーマにはいろいろとアセットがありそれを指定することもできます
theme_keynote
, theme_rails_keynote
, theme_odeo
, theme_pastel
, theme_greyscale
などがあります
また g.theme = Gruff::Themes::THIRTYSEVEN_SIGNALS
と指定しても OK です
縦軸の単位を設定するのは現状だとできないようです
https://github.com/topfunky/gruff/pull/93
この p-r がマージされれば使えるようになります
もしくは自分でコードを修正してもいいと思います
最後に
Ruby + Gruff で折れ線グラフを描画してみました
グラフの種類は他にも円グラフやチャートグラフ、棒グラフもあるので詳しくは参考サイトにあるサンプル一覧を見てください
どれも同じような感じで描画することができます
0 件のコメント:
コメントを投稿