0

私はFlex4.5を使用しています。私のアプリケーションには、基本的なローソク足シリーズを含むローソク足チャートがあります。ここのadobeのドキュメントで説明されているように、LineSeriesをCandleStickChartに追加することで、candlesChartの上に折れ線グラフを追加する機能をユーザーに提供します。

私の問題は、線を追加するとキャンドルの形が狭くなることです。さらに、追加されるすべての線は、キャンドルを狭くしています。

私は周りを見回して、adobeのフォーラムでこのスレッドを見つけました:まったく同じ問題を説明している「LineSeriesのCandlestickChart問題」 。

残念ながら、スレッドはまだ応答されていません。

この問題の解決策を知っている人はいますか?

よろしくお願いします、Ravid

4

2 に答える 2

0

さて、私が見つけた解決策は良くなく、より良い解決策はまだ評価されていますが、同じ問題を抱えている人にとっては、この解決策は私のために働きました:

この問題は、キャンドルのデフォルトのアイテムレンダラーがアイテムの幅を使用して、意味のあるキャンドルのサイズを計算するために発生します。問題は、別のシリーズを追加するとバグが発生し、キャンドルが変更される前にアイテムの幅が変更されることです。

私の解決策は、デフォルトのアイテムレンダラーのコピーを作成し、グラフの幅とそこに配置するキャンドルの数に基づいてキャンドルを描画することです(したがって、アイテムの幅は使用しません)。

問題は修正されますが、ツールチップ機能を使用すると、キャンドルに対する配置が少し混乱します。

于 2012-09-20T12:38:43.037 に答える
0

私はこの答えが少し遅れていることを知っていますが、それが他の誰かを助ける場合に備えて、私がしたことは次のとおりです. (それも完全にテストされていません)

CandleStickChart クラスを拡張するクラスを作成し、「applySeriesSet」関数を次のように単純にオーバーライドします。

override protected function applySeriesSet(seriesSet:Array /* of Series */,
                                               transform:DataTransform):Array /* of Series */
    {
        // filter out the non-candlestick series
        var filteredSeriesSet:Array = new Array();
        for each(var series:Series in seriesSet){
            if(series is CandlestickSeries) filteredSeriesSet.push(series);
        }

        // call the CandlestickChart applySeriesSet function with the filtered set, ignore return value
        super.applySeriesSet(filteredSeriesSet, transform);

        // do the code that the CartesianChart applySeriesSet function would have done, but with the unfiltered seriesSet 
        // would have preferred to do something like super.super.applySeriesSet(seriesSet, transform);
        var n:int = seriesSet.length;
        for (var i:int = 0; i < n; i++)
        {
            var newSeries:IChartElement = seriesSet[i];
            if (newSeries is Series)
                customizeSeries(Series(seriesSet[i]), i);
        }
        return seriesSet;
    }
于 2013-04-01T23:34:32.713 に答える