У меня есть диаграмма с несколькими сериями (Площадь и График).Ряд Area имеет «xField» в качестве «timeStamp» и «yField» в качестве «price».Серия графиков имеет «xField» как «timeStamp» и не «yField» ....!Могу ли я расположить серию графиков, хотя у меня нет соответствующего значения yField?Могу ли я назначить значение по умолчанию для 'yField' (скажем, '10' для всех ...?)
Так я изначально создаю свой AreaChart.На данный момент я понятия не имею, отображать события или нет, поэтому я не пытаюсь создать «серию сюжетов» на этом этапе.
//Note: 'AreaSeries' and 'PlotSeries' have different dataproviders
var areaChart:AreaChart = new AreaChart();
areaChart.width = width;
areaChart.height = height;
areaChart.showDataTips = true;
var vAxis:LinearAxis = new LinearAxis();
if(vAxisLblFunction != null){
vAxis.labelFunction = vAxisLblFunction;
areaChart.verticalAxis = vAxis;
}
var hAxis:CategoryAxis = new CategoryAxis();
hAxis.categoryField = "timeStamp";
areaChart.horizontalAxis = hAxis;
areaChart.horizontalAxisRenderer = createHAxisRenderer(hAxis);
var areaChartSeries:AreaSeries = new AreaSeries();
areaChartSeries.yField = "price";
areaChartSeries.displayName = "Stock Price";
areaChartSeries.setStyle("form", "segment");
var chartStroke:Stroke = new Stroke();
chartStroke.color = 0xFF0000;
chartStroke.weight = CHART_STROKE_WEIGHT;
var chartColor:SolidColor = new SolidColor();
chartColor.alpha = CHART_ALPHA;
chartColor.color = 0x000000;
areaChartSeries.setStyle("areaStroke", chartStroke);
areaChartSeries.setStyle("areaFill", chartColor);
chartSeriesArr.push(areaChartSeries);
Теперь во время выполнения я хочу отобразить некоторые события по мере необходимости.
var evtSer:PlotSeries = new PlotSeries();
evtSer.dataProvider = devEventsAC; //Assume that I get the 'eventsDataProvider' somehow at run-time
evtSer.xField = "timeStamp"; //Notice there is no 'yField' to map here.
//evtSer.dataFunction = eventSerDataFunc; //Tried with a 'dataFunction' assigning default value of '10' to the 'yField'
var fillColor:SolidColor = new SolidColor();
fillColor.color = 0xA933DC;
fillColor.alpha = 0.8;
evtSer.setStyle("fill", fillColor);
var strokeColor:SolidColorStroke = new SolidColorStroke();
strokeColor.color = 0x9494B8;
strokeColor.weight = 1;
evtSer.setStyle("stroke", strokeColor);
var chartSeriesArr:Array = trendPanel.areaChart.series;
chartSeriesArr.push(evtSer);
trendPanel.areaChart.series = chartSeriesArr;
Итак, моя проблема в том, как я могу отобразить «события» безyField.Есть ли способ присвоить значение 'yField', используя 'dataFunction' серии?
Вот моя мысль:
- В 'dataFunction' мы получаем ссылку на 'seriesобъектИспользуя объект серии, получите 'parent', который является диаграммой, а затем получите массив серий для этой диаграммы.
- Теперь, получите значение 'yField' из 'AreaSeries' и верните его как 'yField'значение для 'plot series'.
- Но, если у меня есть несколько событий с одинаковым значением yField, есть очень хороший шанс, что все события будут отображены друг над другом.(Во-первых, я не уверен, работают ли 1 и 2 здесь ...)
Второй подход - использование CartesianDataCanvas.Опять же, здесь требуются точки данных (x, y), которых у меня нет.