2011-01-05 9 views
1

Ich schließe ein neues Diagramm ab, das eine Kategorieachse als meine horizontale und eine lineare Achse als meine vertikale Achse verwendet. Punkte werden korrekt geplottet und ich habe ein kartesisches Data Canvas als Hintergrundelement und ich möchte, dass das Canvas verwendet wird, um einige horizontale rechteckige "Bänder" zu zeichnen, die das gesamte Diagramm füllen (aber nicht das Standard-GridLines-Banding). Ich muss volle (und dynamische) Rechtecke zur Laufzeit basierend auf den Daten und unabhängig von der Tickmarkierungsachse zeichnen.Adobe Flex Charts in Flex 4: Kartesisches Data Canvas mit Kategorie Axis?

Ich habe überprüft, dass meine kartesische Data Canvas als untergeordnetes Element hinzugefügt wird, jedoch waren alle Versuche, dies mithilfe der Zeichnungs-API zu tun, nicht erfolgreich. Ich habe einen Beitrag auf einer anderen Website gefunden und habe die asdocs ausgiebig gelesen und wieder gelesen, um herauszufinden, was mir fehlt (bitte nicht mit Links auf den Beitrag "Verbinden von zwei Spalten mit einer Zeile" antworten).

Als Test habe ich versucht, nur das kartesische Data Canvas zu bekommen, um nur ein einfaches Rechteck zu zeichnen, aber ich bekomme nichts auf dem Bildschirm. Dies ist der Code für diese kleine Übung:

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

Aber ich sehe nichts auf dem Bildschirm. Ich frage mich, ob die Koordinaten, die ich mit dem kartesischen Data Canvas verwende, bei Verwendung einer Kategorieachse funktionieren/übersetzen? Meine Plot-Diagramm Achse und Hintergrundelemente Eigenschaften:

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

Ich würde denken, die cartesianischen Daten Leinwand den Punkt der vertikalen Achse zu nehmen wäre in der Lage (hier Gehaltswert) als ein Punkt und dann die Diagramm Breite passieren zu vervollständigen mein "Banding", aber ich kann NICHTS auf die Leinwand malen. Ich würde denken, da die Leinwand Datenpunkte und nicht Bildschirmkoordinaten verwendet, dass ich immer noch in der Lage sein, mein Gehalt zu verwenden, um die Höhe des Hintergrundelements zu bestimmen, aber immer noch die Diagrammbreite verwenden, um sicherzustellen, dass das Rechteck den gesamten Bildschirm überquert. Jede Hilfe würde sehr geschätzt werden.

UPDATE: Weitere Informationen

So denke ich, entdeckte ich, was das Problem ist hier, und es hat mit Daten-Koordinaten zu tun. Ich konnte das Rechteck zum Zeichnen bringen. Ursprünglich wollte ich ein Plot-Diagramm mit einer Linienreihe verwenden, so dass meine Werte in der Mitte des Diagramms liegen und nicht am Ursprung beginnen. Ich änderte dies zu einem Liniendiagramm mit einer Linienserie und erhielt mein kartesisches Datenfenster, um meine Bänder darzustellen, aber jetzt besteht das Problem darin, dass nicht immer mehrere Datenwerte die gesamte Breite des Diagramms dehnen.

Also diese Frage ist nun, wie bekomme ich den Ursprung des Diagramms in Datenkoordinaten, wenn es keinen tatsächlichen Datenwert an einem bestimmten Punkt gibt? Zum Beispiel zentriert die Verwendung eines Diagrammdiagramms mit einer Linienserie alle Datenwerte, aber um zeichnen zu können, muss ich herausfinden, wie die x-Koordinate des Diagrammursprungs dargestellt wird, wenn kein Datenwert damit assoziiert ist .

Danke!

Antwort