Domanda

Sto usando grafico Open Flash 2 (il plugin) nella mia applicazione rotaie. Tutto è un aspetto liscio, tranne per la gamma sul mio asse x. Io sono la creazione di una linea per rappresentare il cellulare costo del piano nel corso di un determinato periodo di utilizzo e sono generare 8 valori, 1-5 sono al di sotto del all'utilizzo consentito mentre 6-8 sono dimostrazioni del costo per l'utilizzo di oltre il limite.

Il problema che sto incontrando è come impostare l'intervallo dell'asse X in Ruby on Rails per qualcosa di specifico per i dati. In questo momento i valori di essere visualizzati sono gli indici dell'array che sto dando. Quando provo a portata di mano un hash con i valori del grafico non ha nemmeno carica a tutti.

Quindi, in pratica ho bisogno di aiuto per raggiungere un modo per impostare i dati per la mia linea correttamente in modo da visualizzare correttamente, in questo momento si sta trattando ogni valore come se rappresenta il valore x dell'indice della matrice.

Ecco uno screenshot che può essere una descrizione migliore di quello che sto dicendo: http://i163.photobucket.com/albums/t286/Xeno56/Screenshot.png si noti che questi valori sono corretti solo il range sul l'asse x non è corretto, dovrebbe essere qualcosa come 100, 200 , 300, 400, 500, 600, 700

Codice:

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

Anche l'altro problema che sto avendo è che non può solo aggiungere alcuni punti come eventuali valori dò vengono presi come x è la posizione elementi dell'array e y è il valore, che ho bisogno di essere in grado di specificare i valori xey per ogni punto in modo da non dover tampone mio allineamento con un gruppo di valori nulli

È stato utile?

Soluzione 3

Ho finito per l'ammaraggio, Flash Chart aperto 2 e andare con Flotr

Altri suggerimenti

È necessario creare un oggetto XAxis per impostare le etichette:

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

Dalla mia esperienza ci sono molti modi per fare le cose con Open Flash Chart 2. esempio mikezter sopra è quasi corretta; tuttavia, questo è come ho impostato le etichette Xaxis.

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

Si noti l'unica differenza tra il mio esempio e mikezter di che uso è:

x.set_labels([array values etc])

anziché

x.labels = [array values etc] 
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top