Графф работает не очень хорошо. Что же делать?
Я столкнулся с проблемой с Граффом и рельсами. Примеры на сайте завершаются ошибкой с:
ZeroDivisionError: divided by 0
from /home/prikha/.rvm/gems/ruby-1.9.3-p194@rubymine/gems/gruff-0.3.6/lib/gruff/base.rb:1066:in `label'
from /home/prikha/.rvm/gems/ruby-1.9.3-p194@rubymine/gems/gruff-0.3.6/lib/gruff/base.rb:590:in `setup_graph_measurements'
from /home/prikha/.rvm/gems/ruby-1.9.3-p194@rubymine/gems/gruff-0.3.6/lib/gruff/base.rb:532:in `setup_drawing'
from /home/prikha/.rvm/gems/ruby-1.9.3-p194@rubymine/gems/gruff-0.3.6/lib/gruff/base.rb:508:in `draw'
from /home/prikha/.rvm/gems/ruby-1.9.3-p194@rubymine/gems/gruff-0.3.6/lib/gruff/line.rb:53:in `draw'
from /home/prikha/.rvm/gems/ruby-1.9.3-p194@rubymine/gems/gruff-0.3.6/lib/gruff/base.rb:487:in `write'
from (irb):8
from /home/prikha/.rvm/rubies/ruby-1.9.3-p194/bin/irb:16:in `<main>'
1 ответ:
У меня была такая же проблема. Я решаю ее следующим образом: ZeroDivisionError появляется в строке 1066 gruff / base.rb Давайте рассмотрим этот файл поближе
label = if (@spread.to_f % @marker_count.to_f == 0) || !@y_axis_increment.nil?
Итак, ZeroDivisionError был вызван тем, что свойство @marker_count было равно нулю. Я знаю, это не лучшее решение, но я добавил явное задание
@marker_count = <non-zero value>
перед рисованием графика. Итак, теперь пример с сайта выглядит так:#!/usr/bin/ruby require 'rubygems' require 'gruff' g = Gruff::Line.new g.title = "My Graph" g.data("Apples", [1, 2, 3, 4, 4, 3]) g.data("Oranges", [4, 8, 7, 9, 8, 9]) g.data("Watermelon", [2, 3, 1, 5, 6, 8]) g.data("Peaches", [9, 9, 10, 8, 7, 9]) g.marker_count = 4 #explicitly assign value to @marker_count g.labels = {0 => '2003', 2 => '2004', 4 => '2005'} g.write('my_fruity_graph.png')
Это прекрасно работает для меня. Я знаю, что это не общее решение проблемы. проблема, но этот хак может помочь вам справиться с этой библиотекой до тех пор, пока эта ошибка не будет исправлена разработчиками.
Добавить
@market_count-это количество маркеров на вертикальной оси. Таким образом, вы можете играть с этим свойством, чтобы украсить свой график.