概要
Ruby の gruff というライブラリを使ってグラフの描画を行ってみました
中身は ImageMagick を使っています
環境
- macOS 10.14.2
- Ruby ruby 2.5.1p57
- imagemagick 6.9.10-14
ImageMagick インストール
brew install imagemagick@6brew link --force imagemagick@6
RaspberryPi の場合は
apt -y install libmagickcore-dev libmagickwand-dev
gruff インストール
bundle initvim 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 = 1g.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 件のコメント:
コメントを投稿