我有一个堆叠的条形图,条形图需要一些自定义标签。每个条形图都需要显示前面有标签的条形图的值。为了支持这一点,我为BarChart中的各种BarSeries创建了一个自定义labelFunction (见下文)。
该函数成功地呈现了标签,但在堆叠条形图的情况下,标签值没有显示我想要的内容。它不是显示条形图的值,而是显示堆栈中条形图的总和。例如,如果BarSet包含三个值分别为3、4和5的条形图,则标签不会显示为"3“、"4”和"5",而是"3“、"7”和"12“。
从this example上看,我可以通过为每个单独的BarSeries创建一个单独的labelFunction并访问特定的属性(例如data.item.@fooCount)来实现我想要的结果。但是,如果可能的话,我更喜欢只有一个泛型函数。是否有其他属性可以代替xNumber来获取条形图的特定值,而不是总和?
请注意,默认标签行为(即不设置labelFunction)显示的是单个值,而不是总和...所以我假设这是可能的,希望不会有太多额外的障碍。:)
我的自定义labelFunction:
private function setCustomLabel(item:ChartItem, series:Series):String
{
var data:BarSeriesItem = BarSeriesItem(item);
var currentSeries:BarSeries = BarSeries(series);
return currentSeries.displayName + ": " + data.xNumber;
}下面是一些BarChart代码的片段:
<mx:BarChart id="myChart" showDataTips="true"
height="180" width="100%">
...
<mx:BarSet type="stacked">
<mx:BarSeries displayName="Foo Count" xField="fooCount"
labelFunction="setCustomLabel" />
<mx:BarSeries displayName="Bar Count" xField="barCount"
labelFunction="setCustomLabel" />
</mx:BarSet>
</mx:series>
</mx:BarChart>谢谢!
发布于 2011-05-11 22:44:37
我相信你想要做的就是使用dataProvider。现在,您的xNumber应该是针对堆叠序列的,而不是针对传入数据的。
所以,我会尝试这样做:
private function setCustomLabel(item:ChartItem, series:Series):String
{
var data:BarSeriesItem = BarSeriesItem(item);
var currentSeries:BarSeries = BarSeries(series);
return currentSeries.displayName + ": " + data.item[currentSeries.xField];
}这并未经过测试,但我认为您会得到原始数据,而不是使用项目显示的内容。
https://stackoverflow.com/questions/5956773
复制相似问题