【发布时间】:2011-05-10 21:36:22
【问题描述】:
我有一个堆积条形图,其中的条形需要一些自定义标签。每个条都需要显示条的值,前面有一个标签。为了支持这一点,我为 BarChart 中的各种 BarSeries 创建了一个自定义 labelFunction(见下文)。
该函数已成功呈现标签,但在堆叠条的情况下,标签值未显示我想要的。它不是显示条的值,而是显示堆栈中条的总和。例如,如果 BarSet 包含三个值分别为 3、4 和 5 的条形,则标签显示的不是“3”、“4”和“5”,而是“3”、“7”和“12” ”。
从this example 看来,我可以通过为每个单独的 BarSeries 创建单独的 labelFunction 并访问特定属性(例如 data.item.@fooCount)来实现我想要的结果。但是,如果可能的话,我宁愿只使用一个通用函数。我可以访问另一个属性来代替 xNumber 来获取条形的特定值而不是总和吗?
请注意,默认标签行为(即不设置 labelFunction)显示单个值,而不是总和......所以我假设它是可能的,希望没有很多额外的箍跳过。 :)
我的自定义标签函数:
private function setCustomLabel(item:ChartItem, series:Series):String
{
var data:BarSeriesItem = BarSeriesItem(item);
var currentSeries:BarSeries = BarSeries(series);
return currentSeries.displayName + ": " + data.xNumber;
}
一些条形图代码的sn-p:
<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>
谢谢!
【问题讨论】: