開発環境
ruby 2.6.5
Ruby on Rails 5.2.5
前提
gem chartkick
をつかって棒グラフを実装している
本題
chartkick
で棒グラフを作ってるんだけど
要素が少ないとブサイクになる
これを
こうするためにいろいろやった
まず考えたのは要素の大きさを細くすること
しかしうまいことやり方がわからず
で、次に考えたのが今回の本題。
まずはそもそもの部分 chartkick
の仕様について
chartkick
に変数を渡す場合は多重配列で渡してやり、
中の配列の1番目にラベル名、2番目に数字を
渡してやればいい
だから今回の画像の例だと
@chart = [ [関蝉丸神社上社, 1], [熊野三山, 1] ]
この @chart
を chartkick
に渡してやると図が描画される
そこで要素が5個以下だったら計6個の要素がデフォルトになるようにロジックを書いた。
具体的なコードは以下
if @chart.count <= 5
dammy = 6 - @chart.count
dammy.times do |n|
@chart << ["",""]
end
end
これなら @chart
の回数に依存する数だけダミーの要素が @chart
にはいる
実際に中身をみてみると
きちんとロジックは機能している
しかし
なぜか1つ分の要素としてしかカウントされていない
これはおそらく内部的に distinct: true
みたいにされてて
同じ要素が削除されてしまっている
しかしそのへんをオフにするオプションが見つからなくて困った
最終的にはコードは以下みたいにした
if @chart.count <= 5
dammy = 6 - @chart.count
dammy.times do |n|
@chart << ["\n"*n,0]
end
end
メタ文字をいれることでそれぞれの要素を一意にする
実際に中身を見てみると
こんなふうにそれぞれが一意になってそう
そして View
で描画される際にはメタ文字として認識されるから \n
は消える