在柱形图上绘制一条线

时间:2010-08-03 09:55:26

标签: flex charts

显然,不可能有一个具有多个独立水平轴的图表。

我想要实现的目标是:

  • 显示按任意类别
  • 组织的条形图
  • 在其上面叠加一条线(实际上是一条水平线)(以显示某种阈值)

我尝试了以下操作:

[Bindable] public var columnsDataProvider : ArrayCollection = 
  new ArrayCollection([{"Category" : "Cat1", "Value" : 10},
                       {"Category" : "Cat2", "Value" : 20}]);

[Bindable] public var lineDataProvider : ArrayCollection = 
    new ArrayCollection([{"X" : 0, "Y" : 10}, 
                         {"X" : 1, "Y" : 10}]);

...

<mx:ColumnChart id="columnChart"
    showDataTips="true"
    columnWidthRatio="0.5"
    paddingTop="10"
    paddingLeft="5" paddingRight="5"
    width="100%" height="100%">


    <mx:horizontalAxis>
       <mx:CategoryAxis dataProvider="{columnsDataProvider}" categoryField="Category"/>
    </mx:horizontalAxis>

    <mx:series>

        <mx:ColumnSeries id="series1" yField="Value" xField="Carrier" dataProvider="{columnsDataProvider}">
            <mx:horizontalAxis>
                 <mx:CategoryAxis id="axis1" categoryField="Category"/>
            </mx:horizontalAxis>
        </mx:ColumnSeries>

        <mx:LineSeries id="series2" yField="Y" xField="X" dataProvider="  {lineDataProvider}">
                <mx:horizontalAxis>
                    <mx:LinearAxis id="axis2"/>
                </mx:horizontalAxis>
        </mx:LineSeries>
    </mx:series>

这是我最接近我想要的,除了该行没有开始垂直跨越所有图形(它仅在我的条形图的两列之间绘制)。

是否可以定义完全独立的水平轴?

我也尝试直接在画布上绘图,但canvas.lineTo()方法仅适用于“数据”坐标;我需要一些适用于“chart / canvas / absolute / whatever”坐标的东西。

对此有何帮助?

由于 PH

1 个答案:

答案 0 :(得分:2)

<mx:ColumnChart id="columnChart" dataProvider="{columnsDataProvider}"
showDataTips="true" columnWidthRatio="0.5"
paddingTop="10"
paddingLeft="5" paddingRight="5"
width="100%" height="100%">
<mx:horizontalAxisRenderers>
    <mx:AxisRenderer axis="{h1}" />
    <mx:AxisRenderer axis="{h2}" visible="false" />
</mx:horizontalAxisRenderers>
<mx:verticalAxis>
    <mx:LinearAxis id="v1"/>
</mx:verticalAxis>
<mx:series>
    <mx:ColumnSeries id="series1" yField="Value" xField="Category">
        <mx:horizontalAxis>
           <mx:CategoryAxis id="h1" categoryField="Category"/>
        </mx:horizontalAxis>
    </mx:ColumnSeries>
    <mx:LineSeries yField="Y" xField="X" dataProvider="{lineDataProvider}">
        <mx:horizontalAxis>
           <mx:LinearAxis id="h2" maximum="1"/>
        </mx:horizontalAxis>
    </mx:LineSeries>
</mx:series>