[转]flex:ColumnChart图表各个labe…

flex:ColumnChart图表各个labelfunction  


 
        ColumnChart { 
            font-family: "宋体"; 
            font-size:12;
       
     
   
       
          import mx.charts.chartClasses.IAxis;
          import mx.charts.chartClasses.Series;
          import mx.charts.series.items.ColumnSeriesItem;
    import mx.graphics.SolidColor;
    import mx.charts.ChartItem;
    import mx.graphics.IFill;
    import mx.collections.ArrayCollection;
    import mx.charts.HitData;
    import mx.charts.events.ChartItemEvent;
    import mx.utils.*;
   
    [Bindable]
    public var overview:ArrayCollection = new ArrayCollection([
    { date: "01/02/2006", total:3000, food:1300, drinks:1700, other:0, expenses:2700, profit:300},
    { date: "01/08/2006", total:3500, food:1800, drinks:1500, other:200, expenses:2900, profit:600},
    { date: "01/15/2006", total:2600, food:1000, drinks:1600, other:0, expenses:2700, profit:-100},
    { date: "01/22/2006", total:3200, food:1300, drinks:1900, other:0, expenses:2900, profit:200 },
    { date: "02/1/2006", total:2200, food:1200, drinks:1000, other:0, expenses:2100, profit:100 },
    { date: "02/8/2006", total:2600, food:1300, drinks:1600, other:100, expenses:2700, profit:400 },
    { date: "02/16/2006", total:4100, food:2300, drinks:1700, other:100, expenses:2700, profit:200 },
    { date: "02/22/2006", total:4300, food:2300, drinks:1700, other:300, expenses:3300, profit:1000 }
    ]);
   
    [Bindable]
    public var drillDownDataSet:ArrayCollection;
   
    [Bindable]
    public var mainDataProvider:ArrayCollection = overview;
   
    private function init():void{
    }
   
    private function zoomIntoSeries(e:ChartItemEvent): void {
    if(mainDataProvider == overview) {
      drillDownDataSet = new ArrayCollection(createDataForDate(e));
      trace(drillDownDataSet+"---");
      columnSeries.displayName = "Daily Breakdown";
      columnSeries.yField = "amount";
      columnSeries.xField = "type";
     
      ca1.categoryField = "type";
      mainPanel.title = "Profits for "+e.hitData.item.date;
      mainDataProvider = drillDownDataSet;
    } else {
      mainDataProvider = overview;
      columnSeries.displayName = "Profit by date";
      columnSeries.yField = "profit";
      columnSeries.xField = "date";
      ca1.categoryField = "date";
      mainPanel.title = "Profit Overview" ;
    }
    }

    private function profitFunction(element:ChartItem, index:Number):IFill {
    // black for profit
    var dateColor:SolidColor = new SolidColor(0x000000);
    var item:ColumnSeriesItem = ColumnSeriesItem(element);
    var profit:Number = Number(item.yValue);
    if (profit < 0) {
      // red for not profitable
      dateColor.color = 0xFF0000;
    }
    return dateColor;
    }
     
    private function createDataForDate(e:ChartItemEvent):Array {
    var result:Array = [];
    var food:Object = {type:"food", amount:e.hitData.item.food};
    var drinks:Object = {type:"drinks", amount:e.hitData.item.drinks};
    var other:Object = {type:"other", amount:e.hitData.item.other};
    var expenses:Object = {type:"expenses", amount:e.hitData.item.expenses};
    result.push(food);
    result.push(drinks);
    result.push(other);
    result.push(expenses);
    return result;
    }
   
    private function linearAxis_labelFunc(item:Object, prevValue:Object, axis:IAxis):String { 
                return String(item); 
           
   
            private function categoryAxis_labelFunc(item:Object, prevValue:Object, axis:CategoryAxis, categoryItem:Object):String { 
                //var datNum:Number = Date.parse(item); 
                //var tempDate:Date = new Date(datNum); 
                return String(item);
           
   
    private function columnSeries_labelFunc(element:ChartItem, series:Series):String { 
                var csi:ColumnSeriesItem = ColumnSeriesItem(element);
                var ser:ColumnSeries = ColumnSeries(series); 
                //trace(ser.items);
   
                //var datNum:Number = Date.parse(csi.item.@profit); 
                //var tempDate:Date = new Date(datNum); 
                //return fullDateFormatter.format(tempDate); 
                return String(csi.yValue);
            }

 
 
 
 
 
 
    showLabelVertically="true" 
    width="99%" 
    itemClick="zoomIntoSeries(event)" 
    dataProvider="{mainDataProvider}" 
    maxLabelWidth="30">
   
   
      baseAtZero="false"
      labelFunction="linearAxis_labelFunc"/>
   
   
   
      title="August 2007" 
                    labelFunction="categoryAxis_labelFunc"/>
   
   
             
         
   
   
      displayName="Total profit"
      fillFunction="profitFunction"
      yField="profit" xField="date"
      hideDataEffect="slideZoomOut"
      showDataEffect="slideZoomIn" 
      labelFunction="columnSeries_labelFunc" 
                    labelPosition="outside"/>
   
 
 

 

//注意:LinearAxis如果设maximum的值比较小的话,则数据比maximum的值大的就不会显示。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值