Ich habe ein Diagramm mit einer DateTime Achse als meine horizontale und eine lineare Achse für meine vertikale innerhalb eines Adobe Flex Liniendiagramms. Ich möchte ein kartesisches Data Canvas als Hintergrundelement verwenden und benutzerdefinierte Hintergrundgrafiken hauptsächlich Rechtecke zeichnen. Wenn ich mehr als einen einzelnen Datenpunkt habe, funktionieren die Grafiken perfekt, da sie die Breite des gesamten Diagramms überspannen sollen.Flex-Diagramme: Können Sie einen minimalen/maximalen Punkt aus einer IAxis für kartesischen Daten-Canvas verwenden, um die gesamte Breite des Diagramms zu zeichnen?
Wenn ich nur einen einzigen Datenpunkt habe, kann ich die Rechtecke nicht zeichnen. Da ich möchte, dass sich meine Rechtecke über die gesamte Breite des Diagramms erstrecken, dachte ich, dass ich die X-Koordinaten von meiner Achse bekommen könnte, aber das funktioniert nicht.
var canvasWidth:Number = chtCanvas.width;
var canvasHeight:Number = chtCanvas.height;
var minPt:Array;
var maxPt:Array;
var minPtDate:Date;
var maxPtDate:Date;
var minPtComplete:Point;
var maxPtComplete:Point;
// This works fine when there is more than 1 data point
minPt = chtCanvas.localToData(new Point(0, 0));
maxPt = chtCanvas.localToData(new Point(canvasWidth,canvasHeight));
//This does return a date object, but wont draw below
minPtDate = axisDate.minimum;
maxPtDate = axisDate.maximum;
//This returns NaN for the x
minPtComplete = chtCanvas.dataToLocal(minPtDate, axisSalary.minimum);
maxPtComplete = chtCanvas.dataToLocal(maxPtDate, axisSalary.maximum);
// Also tried this. Also returns NaN for the x value
//minPtComplete = chtCanvas.dataToLocal(axisDate.minimum, axisSalary.minumum);
//maxPtComplete = chtCanvas.dataToLocal(axisDate.maximum, axisSalary.maximum);
Mys tatsächliche Ziehverfahren sind wie folgt:
// Tried this, works with points >2, does not draw with single data point
chtCanvas.drawRect(minPt[0], detail[i].MaxValue, maxPt[0], detail[i].MinValue);
//tried this, no effect with single point
//chtCanvas.drawRect(minPtDate, detail[i].MaxValue, maxPtDate, detail[i].MinValue);
// Tried this, no effect with single point
//chtCanvas.drawRect(minPtDate, minPt[1], maxPtDate, detail[i].MinValue);
// Tried this also
//chtCanvas.drawRect(minPtComplete.x, detail[i].MaxValue, maxPtComplete.x, detail[i].MinValue);
In diesem Beispiel Detail ist eine Array Sammlung von Gehaltswerten und Im den Datenwert in dem Feld mit den vertikalen Grenzen meines zu bestimmen, Rechtecke.
Ich muss die Rechtecke über die gesamte Breite des Diagramms zeichnen (auch wenn es nur einen einzigen Datenpunkt gibt). Danke
Erstellt ein minimales Beispiel, das etwas basierend auf Achsenwerten zeichnet: http://pastebin.com/5EJC21wT – Heikki
Ich bemerkte, dass rectange nicht sichtbar ist, bis 'includeInRanges' wahr ist. – Heikki
Das "as Date" half einem Haufen. Ich erhalte jetzt meine Rechtecke sowohl auf mehreren Datenpunkten als auch auf einzelnen Datenpunkten.Das Problem ist, dass bei einzelnen Datenpunkten nicht die gesamte Breite des Diagramms angezeigt wird. – Shawn