Flex: как добавить горизонтальные оси на график? - PullRequest
2 голосов
/ 29 апреля 2009

У меня есть динамически созданная диаграмма, и мне нужно добавить горизонтальную и вертикальную ось в сценарии. Я не могу поместить диаграмму в MXML, потому что я динамически меняю тип диаграммы, удаляю и создаю новую диаграмму. Поэтому переменная, которую я использую для создания диаграммы, экземпляр chartBase, не имеет ни горизонтальной оси, ни вертикальной оси. Как мне назначить их, если они не существуют? Должен ли я использовать другой тип? Графики, которые я хочу использовать, представляют собой линии, столбцы, HLOC и / или подсвечники.

1 Ответ

1 голос
/ 29 апреля 2009

Я думаю, что вы получите лучшие результаты, если создадите экземпляр своего графика как правильный тип.

Например, в компоненте у меня есть скелет lineChart, настроенный в mxml ...

<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;
}

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...