Как показать только целые числа на оси Flex-диаграммы? - PullRequest
2 голосов
/ 31 марта 2011

Я пытаюсь показать некоторые данные, которые являются целыми числами, но BarChart использует дробные значения на оси, что не имеет смысла в этом сценарии. Есть ли способ заставить диаграмму использовать только целочисленные значения на оси? Я не знаю диапазон, так что это может быть что-то от 1 до 10000000, поэтому я не могу просто явно все настроить.

Ответы [ 5 ]

5 голосов
/ 13 мая 2011

Просто наткнулся на это сам и решил, используя пользовательскую функцию labelFunction для оси, которую мне нужно было изменить.

Диаграмма MXML:

<mx:BarChart dataProvider="{data}" width="100%" height="100%">
    <mx:series>
            <mx:BarSeries xField="x" yField="y" />
    </mx:series>
    <mx:verticalAxis>
        <mx:LinearAxis id="verticalAxis" labelFunction="verticalAxis_labelFunction" />
    </mx:verticalAxis>
</mx:BarChart>

labelFunction скрипт:

protected function verticalAxis_labelFunction(labelValue:Object, previousValue:Object, axis:IAxis):String
{
    if (Number(labelValue) != int(labelValue))
        return "";
    else
        return String(labelValue);
}

Единственным недостатком этого подхода является то, что отметки все еще будут присутствовать для десятичных значений.

3 голосов
/ 02 декабря 2011

Я обнаружил, что <mx:LinearAxis interval="1"/> работает.С небольшим диапазоном, таким как 0-2, он помечает 0, 1, 2, но с большим диапазоном, таким как 0-16, он помечает 0, 5, 10, 15.

1 голос
/ 03 марта 2012

Установите для параметра MaximumLabelPrecision значение 0. http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/mx/charts/LinearAxis.html

<mx:verticalAxis>
    <mx:LinearAxis id="valueAxis" maximumLabelPrecision="0"/>
</mx:verticalAxis>
0 голосов
/ 17 мая 2016
0 голосов
/ 31 марта 2011

Я думаю, вам обязательно нужно показать нам пример, где это происходит. Когда я делаю это (в очень простом примере), я получаю целые числа на оси, даже если мои данные состоят из Number s:

<fx:Script>
    <![CDATA[
        import mx.collections.ArrayCollection;

        var data:ArrayCollection = new ArrayCollection([
            { x: 5.5555333343, y: 5.111 },
            { x: 7.2, y: 9.5 },
            ]);

    ]]>
</fx:Script>

<mx:BarChart dataProvider="{data}" width="100%" height="100%">
    <mx:series>
        <mx:BarSeries xField="x" yField="y" />
    </mx:series>
</mx:BarChart>

enter image description here

...