2009-02-28 3 views
2

Lors de la création d'un graphique à courbes, disons que les ventes sont effectuées pour différents départements et horizontalement sont des jours et verticalement des dollars. Lorsque vous passez la souris sur une ligne, cela indique à un DataTip de vous indiquer les ventes pour ce rayon. ce jour la. Je veux qu'il affiche tous les dépôts en même temps, alors dites que vous passez la souris sur le jour 3, je veux afficher les données pour tous les dépôts le jour 3 afin que vous puissiez comparer les valeurs de toutes les ventes le même jour. J'ai mis le mouseSensitivity pour les dataTips pour afficher toutes les lignes à la fois mais je finis par obtenir le jour 2 pour un dept et le jour 3 pour un autre qui n'est pas voulu. Ceci est en fait publié comme un bug et expliqué mieux ici: http://bugs.adobe.com/jira/browse/FLEXDMV-1853FLEX: Rendre la variable DATATIP de LineChart contrainte à l'axe vertical

Je me demande si quelqu'un peut trouver une solution de rechange pour cela?

Merci!

Répondre

0

Pas une réponse, mais une mauvaise solution:

Vous pouvez créer votre propre DataTip que renderer [ahem] l'emplacement cartographié chaque point et a tiré la pointe pour chacun d'eux là-bas.

Fondamentalement, vous dupliqueriez beaucoup de code dans les classes de cartographie.

0

J'ai le même problème mais je travaille sur des diagrammes à colonnes. Pensait que je pourrais activer les gridLines verticales en utilisant backgroundElements, puis ajouter un écouteur d'événement de graphique pour la souris sur (qui se déclenche lorsque la souris passe sur une ligne de grille verticale). En utilisant la valeur localX, je pourrais le comparer au point de données le plus proche, peut-être.

Brian

2

je suis tombé sur un problème similaire à celui récemment et est venu avec une solution qui applique également à votre problème. J'avais une étape LineChart et je voulais afficher une pointe de données lorsque l'utilisateur a plané n'importe où sur la ligne au lieu de seulement à des points de données définis.

Vous pouvez lire au sujet de la solution que j'ai écrit pour ce problème: Flex: Customizing data tip location and behavior in a LineChart

Vous devrez modifier légèrement ma solution adaptée à votre problème:

Sur la ligne 47 vous pouvez supprimer le contrôle Math.abs(last.y - mouseLoc.y) < 50. Cela contraint les conseils de données à des lignes situées à moins de 50 pixels verticalement de la souris.

Je suppose que vous utilisez la carte de ligne par défaut segments qui tire juste lignes directement entre les points de données. Vous devrez modifier le code qui calcule la valeur de ligne à une coordonnée x donnée pour travailler avec ce type de graphique. Je trouve déjà le point de données le plus proche à gauche de la souris avec les lignes 33-41 et le stocke dans last. Juste obtenir le point de données (qui sera celui le plus proche du droit de la souris) et utiliser quelque chose comme ceci pour obtenir la valeur à la souris:

var slope:Number = (nextPoint.y - last.y)/(nextPoint.x - last.x); 
var lineYAtMouse:Number = (slope * (last.x - mouseLoc.x)) + last.y; 
var lineValue:Array = line.localToData(new Point(mouseLoc.x, lineYAtMouse)); 

remplacent alors les lignes 69 à 72 avec:

hitPoint.x = mouseLoc.x; 
hitPoint.y = lineYAtMouse; 
hitPoint.xValue = lineValue[0]; 
hitPoint.yValue = lineValue[1]; 

Je n'ai pas testé ces modifications donc il pourrait y avoir un bug ou 2 mais l'idée générale est là. J'espère que c'est peut-être encore utile à quelqu'un. Cette question devient assez vieille. :)

+0

+ 1- excellente réponse – Ryan

+0

Site en panne. Voici la version archivée. http://web.archive.org/web/20120623212953/http://instantdelay.com/2010/08/flex-customizing-données-tip-location-and-behavior-in-a-linechart – approxiblue

+0

@deshko Oups, j'ai foiré mon hébergement. Devrait être de retour maintenant. – takteek

Questions connexes