Flex: позиция серии позиционирования - PullRequest
0 голосов
/ 06 сентября 2011

У меня есть диаграмма с несколькими сериями (Площадь и График).Ряд 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' серии?

Вот моя мысль:

  1. В 'dataFunction' мы получаем ссылку на 'seriesобъектИспользуя объект серии, получите 'parent', который является диаграммой, а затем получите массив серий для этой диаграммы.
  2. Теперь, получите значение 'yField' из 'AreaSeries' и верните его как 'yField'значение для 'plot series'.
  3. Но, если у меня есть несколько событий с одинаковым значением yField, есть очень хороший шанс, что все события будут отображены друг над другом.(Во-первых, я не уверен, работают ли 1 и 2 здесь ...)

Второй подход - использование CartesianDataCanvas.Опять же, здесь требуются точки данных (x, y), которых у меня нет.

1 Ответ

0 голосов
/ 06 сентября 2011

Вы можете использовать CartesianDataCanvas , чтобы рисовать объекты на графике, используя координаты данных.Но если вы действительно хотите использовать PlotSeries для отображения временных событий на диаграмме, вы можете зациклить свой dataProvider и добавить свойство со значением по умолчанию, которое вы будете использовать в plotTeries как yField ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...