我有一个我正在尝试通过动态脚本动态构建的弹性图表。出于测试目的,我想出了以下数据结构和代码:
Bindable]
public var columnDat:Array=
[{signalID:"SCL", point2:100},
{signalID:"SCL", point2:50},
{signalID:"SCL", point2:30},
{signalID:"SCL", point2:60},
{signalID:"SCL", point2:220},
{signalID:"SCL", point2:140},
{signalID:"SCL", point2:280}];
public function makeDummyChart(genericChart:CartesianChart, genericLegend:Legend, chartPanel:ChartPanel):void {
var renderers:ArrayCollection = new ArrayCollection();
genericChart = new ColumnChart();
// Define the two axes.
var dispAxis:CategoryAxis = new CategoryAxis();
var axr:AxisRenderer = new AxisRenderer();
axr.axis = dispAxis;
renderers.addItem(axr);
var seriesList:ArrayCollection=new ArrayCollection();
// Add the series
genericChart.horizontalAxis = dispAxis;
var columnSeries:ColumnSeries = new ColumnSeries();
BindingUtils.bindProperty(columnSeries, "dataProvider", this, "columnDat");
columnSeries.xField="signalID";;
columnSeries.yField="point2";
seriesList.addItem(columnSeries);
genericChart.series = seriesList.toArray();
genericLegend.dataProvider = genericChart;
genericChart.horizontalAxisRenderers = renderers.toArray();
genericLegend.dataProvider = genericChart;
// chart panel is just the panel on the screen where chart is displayed
chartPanel.addChild(genericChart);
trace (" make dummy chart done");
}
运行此代码时,我得到一张空白图表。
答案 0 :(得分:0)
现在无法测试它,但如果你只是将columnDat
数组分配给该系列就足够了:
columnSeries.dataProvider = columnDat;
或柱形图:
genericChart.dataProvider = columnDat;
答案 1 :(得分:0)
首先,您应该使用MXML来处理这些问题。这更容易。
其次,我认为你没有很好地遵循这个例子。有两种方法可以做图表:
1)将数据添加到图表数据提供程序,并让系列指定该数据提供程序中的x和y字段。
2)不要将数据添加到图表,只需将数据直接添加到系列中,而无需指定x和y字段。
现在,你正在混合使用1和2,系列无法看到数据,因为它被过滤掉,这就是为什么它是空白的。不要在系列上设置数据提供者,而是将其设置在图表上,它应该可以工作。再举一例,look at the docs。