如何在Flex饼图中显示分组的XML数据?
我已经研究过使用GroupingCollections和AdvancedDataGrids对XML数据进行分组,但我不知道如何在图表中显示这些数据 基本上,我要做的是按照category字段对数据进行分组,这应该给我两行,一行在红色下面,一行在蓝色下面,一行在绿色下面。将此数据输入饼图时,应占用适当的空间(红色为1/2,蓝色和绿色各为1/4)。我不需要其他_数据字段,因为我希望使用组名(在本例中为类别)作为标注 有什么建议吗 样本数据:如何在Flex饼图中显示分组的XML数据?,xml,apache-flex,Xml,Apache Flex,我已经研究过使用GroupingCollections和AdvancedDataGrids对XML数据进行分组,但我不知道如何在图表中显示这些数据 基本上,我要做的是按照category字段对数据进行分组,这应该给我两行,一行在红色下面,一行在蓝色下面,一行在绿色下面。将此数据输入饼图时,应占用适当的空间(红色为1/2,蓝色和绿色各为1/4)。我不需要其他_数据字段,因为我希望使用组名(在本例中为类别)作为标注 有什么建议吗 样本数据: <row> <category>
<row>
<category>red</category>
<other_data>this shouldn't really matter</other_data>
</row>
<row>
<category>blue</category>
<other_data>this shouldn't really matter</other_data>
</row>
<row>
<category>red</category>
<other_data>this shouldn't really matter</other_data>
</row>
<row>
<category>green</category>
<other_data>this shouldn't really matter</other_data>
</row>
红色
这其实不重要
蓝色
这其实不重要
红色
这其实不重要
绿色
这其实不重要
我来试一试。也许有一种更优雅的方式,或者更高效的方式,但是
将XML转换为对象的ArrayCollection
{类别:“红色”,其他数据:“无所谓”}
.
.
从那里
var categoryGroup:GroupingCollection=new GroupingCollection();
categoryGroup.source=ac; // you're ArrayCollection
var grouping:Grouping=new Grouping();
var groupingField:GroupingField=new GroupingField("category");
grouping.fields=[groupingField];
categoryGroup.grouping=grouping;
categoryGroup.refresh();
var categoryAC:ArrayCollection=categoryGroup.getRoot() as ArrayCollection;
chart.dataProvider=categoryAC;
除此之外,你还得在图表上施点魔法
<mx:PieChart id="chart" height="100%" width="100%">
<mx:series>
<mx:PieSeries dataFunction="myDataFunction" labelFunction="myLabelFunction" labelPosition="callout"/>
</mx:series>
</mx:PieChart>
这可能有点太重了,但它会起作用,并且可以扩展到其他场景。@Mike我能够将数据拉入GroupingCollection并将其输出到AdvancedDataGrid(并且它被正确分组),但当我尝试定义图表的dataSource属性时,它会出错,不会显示。
public function myDataFunction(series:Series, item:Object, fieldName:String):Object
{
return (item.children.length);
}
public function myLabelFunction(data:Object, field:String, index:Number, percentValue:Number):String
{
return data.GroupLabel;
}