У меня есть диаграмма с осью DateTime в качестве моей горизонтальной и линейной осью для моей вертикали внутри линейной диаграммы Adobe Flex. Я хочу использовать холст с декартовыми данными в качестве фонового элемента и рисовать настраиваемый набор фоновой графики, в основном прямоугольники. Когда у меня есть более одной точки данных, графика работает отлично, поскольку предполагается, что они занимают ширину всей диаграммы.
Однако, когда у меня есть только одна точка данных, я не могу нарисовать прямоугольники. Поскольку я хочу, чтобы мои прямоугольники занимали всю ширину диаграммы, я думал, что могу получить координаты x по моей оси, но это не работает.
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);
Мой фактический метод рисования выглядит следующим образом:
// 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);
В этом примере деталь - это массив значений заработной платы, а Im использует значение данных в массиве для определения вертикальных границ моих прямоугольников.
Мне нужно нарисовать прямоугольники по всей ширине диаграммы (даже если есть только одна точка данных). Спасибо
includeInRanges
не истинно. - person Heikki   schedule 10.01.2011