2010-04-11 4 views
1

J'utilise ouvert flash graphique 2 (le plugin) dans mon application de rails. Tout a l'air lisse, sauf pour la gamme sur mon axe x. Je crée une ligne pour représenter le coût du plan de téléphonie cellulaire sur une quantité spécifique d'utilisation et je génère 8 valeurs, 1-5 sont en dessous de l'utilisation autorisée tandis que 6-8 sont des démonstrations du coût d'utilisation au-delà de la limite.ouvrir le tableau flash rails x-axe question

Le problème que je rencontre est de savoir comment définir la plage de l'axe X dans Ruby on rails à quelque chose de spécifique aux données. En ce moment, les valeurs affichées sont les index du tableau que je donne. Lorsque j'essaie de transmettre un hachage aux valeurs, le graphique ne charge même pas du tout. Donc, fondamentalement, j'ai besoin d'aide pour définir correctement les données de ma ligne afin qu'elles s'affichent correctement. Actuellement, toutes les valeurs sont traitées comme si elles représentaient la valeur x de l'index du tableau.

Voici une capture d'écran qui peut être une meilleure description que ce que je dis: http://i163.photobucket.com/albums/t286/Xeno56/Screenshot.png Notez que ces valeurs sont correctes juste la plage sur l'axe des x est incorrecte, il devrait être quelque chose comme 100, 200, 300, 400, 500, 600, 700

code:

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 

aussi l'autre problème que je vais avoir est je ne peux pas juste ajouter quelques points que toutes les valeurs que je donne sont prises comme étant les éléments x position dans le tableau et y étant la valeur, alors que je dois être en mesure de spécifier les valeurs x et y pour chaque point, donc je ne dois pas mettre en mémoire tampon mon tableau avec un tas de valeurs nulles

+0

Pourriez-vous élaborer sur les plugins/gems que vous utilisez? – zetetic

+0

le plugin est ouvert graphique flash 2 – Jimmy

Répondre

0

J'ai fini par le creusement de fossés carte flash ouvert 2 et aller avec Flotr

0

Vous devez créer un objet XAxis pour définir les étiquettes:

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

les x étiquettes affichent toujours la même manière – Jimmy

+0

J'ai édité ma réponse pour le faire fonctionner pour Open Flash Chart 2 – mikezter

+0

Maintenant, il montre juste toutes les étiquettes empilées les unes des autres à 0,0 – Jimmy

0

De mon expérience, il y a plusieurs façons de faire des choses avec Open Flash Chart 2. Exemple mikezter ci-dessus est presque correcte; Cependant, voici comment je définis les étiquettes XAxis.

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

Notez la seule différence entre mon exemple et mikezter c'est je l'utilise:

x.set_labels([array values etc]) 

au lieu de

x.labels = [array values etc] 
+0

Il s'avère que .set_labels et .labels sont des alias l'un pour l'autre. – kestrelb