打开flash图表轨道x轴问题

时间:2010-04-11 01:07:05

标签: ruby-on-rails open-flash-chart

我在rails应用程序中使用了开放式Flash图表2(插件)。除了x轴上的范围外,一切看起来都很流畅。我正在创建一条线来表示超过特定使用量的手机计划成本,我生成8个值,1-5低于允许的使用量,而6-8是超出限制的使用成本的演示。

我遇到的问题是如何将轨道上的ruby中的X轴范围设置为特定于数据的范围。现在显示的值是我给出的数组的索引。当我尝试将哈希值交给值时,​​图表甚至根本不加载。

所以基本上我需要帮助才能正确设置我的行数据,以便正确显示,现在它正在处理每个值,就像它代表数组索引的x值一样。

这是一个屏幕截图,可能是比我说的更好的描述:http://i163.photobucket.com/albums/t286/Xeno56/Screenshot.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是值,而我需要能够指定每个点的x和y值,这样我就不必用一堆空值缓冲我的数组

3 个答案:

答案 0 :(得分:0)

您必须创建一个XAxis对象来设置标签:

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

答案 1 :(得分:0)

根据我的经验,使用Open Flash Chart 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] 

答案 2 :(得分:0)

我最终放弃了打开闪存图2并使用Flotr