2

折れ線グラフを作成するときは、さまざまな部門のビジネス売上高で、横方向が日、縦方向がドルであるとしましょう。行にカーソルを合わせると、その部門の売上を示すデータヒントが表示されます。その日に。すべての部門を同時に表示したいので、3 日目にカーソルを合わせると、3 日目のすべての部門の dataTips を表示して、同じ日のすべての売上の値を比較できるようにします。すべての行を一度に表示するようにdataTipsのmouseSensitivityを設定しましたが、ある部門では2日目、別の部門では3日目を取得することになりましたが、これは望ましくありません。これは実際にはバグとして投稿されており、こちらで詳しく説明されています: http://bugs.adobe.com/jira/browse/FLEXDMV-1853

誰かがこれを回避できるかどうか疑問に思っていますか?

ありがとう!

4

3 に答える 3

2

最近、これと同様の問題に遭遇し、あなたの問題にも当てはまる解決策を思いつきました。ステップ LineChart があり、定義されたデータ ポイントだけでなく、ユーザーが線上の任意の場所にカーソルを置いたときにデータ ヒントを表示したいと考えていました。

その問題に対して私が書いた解決策については、ここで読むことができます:フレックス: LineChart でのデータ ヒントの位置と動作のカスタマイズ

問題に合わせて私のソリューションを少し変更する必要があります。

Math.abs(last.y - mouseLoc.y) < 5047行目でチェックを外すことができます。これにより、データ ヒントがマウスの垂直方向に 50 ピクセル以内の線に制限されます。

データポイント間に直接線を引くだけのデフォルトのセグメント折れ線グラフを使用していると思います。特定の x 座標で線の値を計算するコードを変更して、そのグラフ タイプを操作する必要があります。33 ~ 41 行目で、マウスの左側にある最も近いデータ ポイントを既に見つけて、last. 次のデータ ポイント (マウスの右側に最も近いデータ ポイント) を取得し、次のようなものを使用してマウスの値を取得します。

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));

次に、69 行目から 72 行目を次のように置き換えます。

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

私はこれらの変更をテストしていないので、1 つまたは 2 つのバグがある可能性がありますが、一般的な考え方はそこにあります。これが誰かにとってまだ役立つことを願っています。この質問はかなり古くなっています。:)

于 2010-08-05T02:27:12.807 に答える
0

答えではありませんが、貧弱な代替手段:

[ahem] がすべてのポイントの位置をマッピングし、そこにそれぞれのポイントを描画する独自の DataTip レンダラーを作成できます。

基本的に、チャート クラス内で多くのコードを複製することになります。

于 2009-06-17T16:38:47.217 に答える
0

同じ問題がありますが、縦棒グラフで作業しています。backgroundElements を使用して垂直 gridLines を有効にしてから、マウス オーバー用のチャート イベント リスナーを追加できると考えていました (マウスが垂直グリッド線を通過すると発生します)。localX 値を使用すると、おそらく最も近いデータポイントと比較できます。

ブライアン

于 2010-03-25T23:01:31.120 に答える