Pergunta

Estou usando o Open Flash Chart 2 (o plug -in) no meu aplicativo Rails. Tudo parece suave, exceto para o alcance no meu eixo X. Estou criando uma linha para representar o custo do plano de telefone celular em uma quantidade específica de uso e estou gerando 8 valores, 1-5 está abaixo do uso permitido, enquanto 6-8 são demonstrações do custo de uso acima do limite.

O problema que estou encontrando é como definir o intervalo do eixo X no rubi nos trilhos como algo específico para os dados. No momento, os valores que estão sendo exibidos são os índices da matriz que estou dando. Quando tento entregar um hash aos valores, o gráfico nem carrega.

Então, basicamente, preciso de ajuda para obter uma maneira de definir os dados para minha linha corretamente, para que ela seja exibida corretamente, agora está tratando todos os valores como se representasse o valor x do índice da matriz.

Aqui está uma foto de tela que pode ser uma descrição melhor do que o que estou dizendo: http://i163.photobucket.com/albums/t286/xeno56/screenshot.png Observe que esses valores estão corretos apenas o intervalo no eixo x está incorreto, deve ser algo como 100, 200, 300, 400, 500, 600, 700

Código:

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

Além disso, o outro problema que estou tendo é que não posso simplesmente adicionar alguns pontos, pois quaisquer valores que eu dou são considerados x sendo a posição dos elementos na matriz e y sendo o valor, enquanto eu preciso ser capaz de especificar o x e y valores para cada ponto, para que eu não precise amortecer minha matriz com um monte de valores nulos

Foi útil?

Solução 3

Acabei abandonando o Flash Chart 2 e indo com FloTr

Outras dicas

Você precisa criar um objeto Xaxis para definir os rótulos:

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

Pela minha experiência, existem muitas maneiras de fazer as coisas com o Flash Chart 2. Mikezter Exemplo acima está quase correto; No entanto, é assim que eu defino os rótulos do Xaxis.

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

Observe a única diferença entre meu exemplo e Mikezter é eu uso:

x.set_labels([array values etc])

ao invés de

x.labels = [array values etc] 
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top