У меня есть диаграмма с осью DateTime как моя горизонтальная и линейная ось для моей вертикали внутри линейки графиков Adobe Flex. Я хочу использовать Cartesian Data Canvas в качестве фонового элемента и нарисовать собственный набор фоновой графики, в основном прямоугольников. Когда у меня больше одной точки данных, графика отлично работает, поскольку они должны охватывать ширину всей диаграммы.Гибкие диаграммы. Можете ли вы использовать минимальную/максимальную точку из IAxis для декартового холста данных, чтобы нарисовать всю ширину диаграммы?
Однако, когда у меня есть только одна точка данных, я не могу получить прямоугольники для рисования. Поскольку я хочу, чтобы мои прямоугольники охватывали всю ширину диаграммы, я думал, что могу получить координаты 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, используя значение данных в массиве для определения вертикальных границ моего прямоугольники.
Мне нужно нарисовать прямоугольники всей ширины диаграммы (даже если имеется только одна точка данных). Thanks
Создал минимальный пример, который рисует что-то на основе значений осей: http://pastebin.com/5EJC21wT – Heikki
Я заметил, что исправление не видно, если 'includeInRanges' истинно. – Heikki
«Как дата» помогли кучу. Теперь я получаю свои прямоугольники как на нескольких точках данных, так и на отдельных точках данных.Проблема в том, что в одиночных точках данных Im не получает полную ширину диаграммы. – Shawn