Вопрос

Я использую открытую флэш-диаграмму 2 (плагин) в приложении Rails. Все выглядит гладко, кроме диапазона на моей оси X. Я создаю линию для представления плана сотового телефона затраты на определенное количество использования, и я генерирую 8 значений, 1-5 ниже разрешенного использования, в то время как 6-8 - демонстрации затрат на использование за предел.

Проблема, которую я сталкиваюсь, заключается в том, как установить ассортимент оси X в Ruby на рельсах на что-то конкретное для данных. Прямо сейчас отображаемые значения являются индексами массива, которые я даю. Когда я пытаюсь передать хеш к значениям, график даже не загружается вообще.

Таким образом, мне нужна помощь, чтобы получить способ правильно установить данные для моей линии, чтобы она отображалась правильно, прямо сейчас это относится к каждому значению, как если бы он представляет значение X индекса массива.

Вот экран выстрел, который может быть лучшее описание, чем то, что я говорю: http://i163.photobucket.com/albums/t286/xeno56/tsreenshot.png. Обратите внимание, что эти значения верны, просто диапазон на оси X неверно, это должно быть что-то вроде 100, 200, 300, 400, 500, 600, 700

Код:

y = YAxis.new
y.set_range(0,100, 20)

x_legend = XLegend.new("Usage")
x_legend.set_style('{font-size: 20px; color: #778877}')

y_legend = YLegend.new("Cost")
y_legend.set_style('{font-size: 20px; color: #770077}')

chart =OpenFlashChart.new
chart.set_x_legend(x_legend)
chart.set_y_legend(y_legend)
chart.y_axis = y

line = Line.new
line.text = plan.name
line.width = 2
line.color = '#006633'
line.dot_size = 2
line.values = generate_data(plan)     
chart.add_element(line)

def generate_data(plan)
  values = []
  #generate below threshold numbers
  5.times do |x|
    usage = plan.usage / 5 * x 
    cost = plan.cost
    values << cost
  end
  #generate above threshold numbers
  3.times do |x|
    usage = plan.usage + ((plan.usage / 5) * x)
    cost = plan.cost + (usage * plan.overage)
    values << cost
  end
  return values
end

Кроме того, у меня есть другая проблема, я могу просто добавить несколько баллов в качестве любых значений, которые я даю, принимаются, как X - это позиция элементов в массиве, а y - значение, тогда как мне нужно иметь возможность указывать х и Y значений для каждой точкой, поэтому мне не нужно буфер моим массивом с кучей нулевых значений

Это было полезно?

Решение 3

Я закончил угроза открытой флэш-диаграммы 2 и идя с Flotr

Другие советы

Вы должны создать объект XAXIS, чтобы установить этикетки:

x = XAxis.new
x.labels =  [100, 200, 300, 400, 500, 600, 700].collect(&:to_s)
chart.x_axis = x

Из моего опыта есть много способов сделать вещи с открытой флэш-диаграммой 2. Пример Mikezter выше практически правильный; Однако вот как я установил этикетки Xaxis.

x = XAxis.new
x.set_labels([100, 200, 300, 400, etc]).collect(&:to_s)
chart.x_axis = x

Обратите внимание, что единственная разница между моим примером и Mikezter - я использую:

x.set_labels([array values etc])

вместо

x.labels = [array values etc] 
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top