2011-01-05 5 views
1

カテゴリ軸を私の水平軸、直線軸を垂直軸とする新しいチャートを完成させています。ポイントが正しくプロットされており、デカルトデータキャンバスが背景要素として使用されています。キャンバスを使用して、チャート全体を埋める水平の矩形の「バンド」を描画します(標準のGridLinesバンディングではありません)。私は、データに基づいて、目盛り軸とは無関係に、実行時に完全な(そして動的な)矩形を描く必要があります。Flex 4のAdobe Flexチャート:カテゴリ軸付きデカルトデータキャンバス?

私はデカルトデータキャンバスが子要素として追加されていることを確認しましたが、実際に描画APIを使用してこれを描画しようとする試みはすべて失敗しました。私は別のサイトに投稿を見つけて、読んで再読み込みして、私が何が足りなくなっているのかを広げようとしています(「2列を1行に接続する」リンクへの返信はしないでください)。

テストとして、私はデカルトデータキャンバスをちょうど基本的な矩形を描画するようにしましたが、画面上に何も表示されません。これは、その小さな運動のコードです:

protected function drawChartCanvas():void 
{ 

    chtCanvas.clear(); 
    chtCanvas.beginFill(0x000000); 

    var canvasWidth:Number = chtCanvas.width; 
    var canvasHeight:Number = chtCanvas.height; 

    var minPt:Array = chtCanvas.localToData(new Point(0, 0)); // 
    var maxPt:Array = chtCanvas.localToData(new Point(canvasWidth,canvasHeight)); 


    // Tried this 
    chtCanvas.drawRect(minPt[0]-1, maxPt[1], maxPt[0]-1, minPt[1]); 

    // Tried using data coordinates 
    //chtCanvas.drawRect(0, someChartData, chart.width, 0); 

    // Tried something random like this 
    // chtCanvas.drawRect(0,10000, 10000, 0); 

    chtCanvas.endFill(); 
} 

私は画面上に何も見ていません。私は、デカルトデータキャンバスで使用している座標が、カテゴリ軸を使用するときに動作するか/変換するのか疑問に思っていますか?私のプロットチャート軸と背景要素のプロパティ:

<mx:backgroundElements> 
<mx:CartesianDataCanvas id="chtCanvas" includeInRanges="true" includeInLayout="true" visible="true"/> 
<mx:GridLines gridDirection="horizontal"/> 
</mx:backgroundElements> 


<mx:verticalAxis> 
<mx:LinearAxis id="axisSalary" baseAtZero="true" autoAdjust="true" title="Salary"/> 
</mx:verticalAxis> 
<mx:horizontalAxis> 
<mx:CategoryAxis id="axisDate" categoryField="Date" title="Date" dataFunction="formatChartDates"/> 
</mx:horizontalAxis> 

私はデカルトデータキャンバス点として、縦軸(ここでは給与の値)のポイントを取り、その後、完了するために、グラフの幅を渡すことができると思うだろう私の "バンディング"、しかし私はキャンバスに描画するために何も取得できません。キャンバスはデータポイントを使用し、スクリーン座標は使用しないので、私は給与を使って背景要素の高さを決定することができますが、グラフの幅を使用して四角形が十字形になるようにしていると思います。どんな助けでも大歓迎です。

UPDATE:追加情報

だから、私は問題はここにあり、それがデータ座標に関係しているものを発見したと思います。私は描画する長方形を得ることができました。もともと、私はライン・シリーズでプロット・チャートを使用して、起点で始めるのではなく、チャートの中央に値を配置することにしました。これをLine SeriesのLine Chartに変更し、Cartesian Data Canvasを使用してバンディングをレンダリングしましたが、問題は常にチャートの幅全体を拡大する複数のデータ値が存在しないことです。

これで、実際のデータ値が特定のポイントにない場合に、グラフの起点をデータ座標にどのようにして取得できますか?たとえば、線グラフでプロットチャートを使用すると、すべてのデータ値が中央に表示されますが、描画するためには、データ値が関連付けられていないグラフの原点のx座標を表す方法を理解する必要があります。

ありがとうございます!

答えて

関連する問題