Flex:如何将水平轴添加到图表中?

时间:2009-04-28 23:01:47

标签: flex charts actionscript

我有一个动态创建的图表,我需要在脚本中添加水平和垂直轴。我无法将图表放入MXML,因为我正在动态更改图表类型,删除和创建新图表。因此,我用于创建图表的变量(chartBase的一个实例)没有horizo​​ntalAxis或verticalAxis。如果它们不存在,我该如何分配给它们?我应该使用不同的类型吗?我想要使​​用的图表是line,bar和HLOC和/或烛台。

1 个答案:

答案 0 :(得分:1)

我认为通过将图表实例化为合适的类型,您将获得更好的结果。

例如,在组件中,我在mxml ...

中设置了骨架lineChart
<mx:LineChart id="lineChart" dataProvider="{chartData}" dataTipFunction="dataTipFunction"
    width="100%"
    height="100%"
    showDataTips="true"
    />

...但您可以将其创建为变量并将其添加到容器中。然后对于轴我确定我想要的类型并创建并应用它们,这里是我用于水平轴的一些代码......

// Setup new horizontal axis.
switch (hAxisFieldsComboBox.selectedItem.dataType)
{
    case "Date":
        var hDtAxis:DateTimeAxis = new DateTimeAxis();
        hDtAxis.title = hAxisFieldsComboBox.selectedItem.label;
        hDtAxis.dataUnits = "days";
        hDtAxis.dataInterval = 1;
        hDtAxis.parseFunction = dateParser;
        lineChart.horizontalAxis = hDtAxis;
        break;
    case "Time":
        var hTAxis:DateTimeAxis = new DateTimeAxis();
        hTAxis.title = hAxisFieldsComboBox.selectedItem.label;
        hTAxis.dataInterval = 1;
        hTAxis.parseFunction = timeParser;
        lineChart.horizontalAxis = hTAxis;
        break;
    case "Number":
        var hLAxis:LinearAxis = new LinearAxis();
        hLAxis.title = hAxisFieldsComboBox.selectedItem.label;
        hLAxis.interval = 1;
        hLAxis.minimum = 0;
        lineChart.horizontalAxis = hLAxis;
        break;
    default:
        var hCatAxis:CategoryAxis = new CategoryAxis();
        hCatAxis.title = hAxisFieldsComboBox.selectedItem.label;
        hCatAxis.dataProvider = schemaUtil.aggregateAndSortCasesAC(chartData, vAxisFieldsComboBox.selectedItem.data, [hAxisFieldsComboBox.selectedItem.data]);
        hCatAxis.categoryField = hAxisFieldsComboBox.selectedItem.data;
        lineChart.horizontalAxis = hCatAxis;
}

希望有所帮助。