Flex сбросить ось диаграммы минимум / максимум - PullRequest
0 голосов
/ 11 ноября 2009

Я показываю гистограмму с накоплением с помощью Flex и динамически изменяю данные поставщика данных.

Однако минимальное и максимальное значения для оси Y не сбрасываются с новыми данными. Таким образом, если один набор данных имел значение -100 000, а следующий набор данных имеет только положительные значения, ось y все еще начинается с -100 000.

Как я могу заставить диаграмму перерисовать. Я пробовал myChart.validateNow (), dataprovider.refresh () и т. Д.

    <mx:ColumnChart id="myChart"
                    dataProvider="{_arrCol_chartData}"
                    columnWidthRatio="0.8"
                    type="stacked"
                    width="100%"
                    height="100%">
        <mx:annotationElements>
            <mx:CartesianDataCanvas id="canvas"
                                    includeInRanges="true"/>
        </mx:annotationElements>

        <mx:horizontalAxis>
            <mx:CategoryAxis dataProvider="{_arrCol_chartData}"
                             categoryField="Month"
                             id="a1"/>
        </mx:horizontalAxis>
        <mx:verticalAxisRenderers>
            <mx:AxisRenderer axis="{a1}"
                             tickPlacement="none"
                             showLabels="false"
                             showLine="false"/>
        </mx:verticalAxisRenderers>

        <mx:series>
            <mx:ColumnSeries yField="invisible"
                             displayName="invisible"
                             showDataEffect="slideIn"
                             hideDataEffect="slideOut">
                <mx:fill>
                    <!--Set alpha to 0 to hide invisible column.-->
                    <mx:SolidColor color="0xFFFFFF"
                                   alpha="0"/>
                </mx:fill>
            </mx:ColumnSeries>
            <mx:ColumnSeries yField="freeCashflow"
                             styleName="standardSeries"
                             labelFunction="setCurrencyLabel">
                <mx:fill>
                    <mx:SolidColor color="0xCCCCCC"
                                   alpha="1"/>
                </mx:fill>
            </mx:ColumnSeries>
            <mx:ColumnSeries yField="invisibleTop"
                             displayName="invisible"
                             showDataEffect="slideIn"
                             hideDataEffect="slideOut">
                <mx:fill>
                    <!--Set alpha to 0 to hide invisible column.-->
                    <mx:SolidColor color="0xFFFFFF"
                                   alpha="0"/>
                </mx:fill>
            </mx:ColumnSeries>
            <mx:ColumnSeries yField="bottom"
                             styleName="standardSeries"
                             labelFunction="setCurrencyLabel">

                <mx:fill>
                    <mx:SolidColor color="0x1B95D5"
                                   alpha="1"/>
                </mx:fill>
            </mx:ColumnSeries>
            <mx:ColumnSeries yField="top"
                             id="topColumn"
                             styleName="standardSeries"
                             labelFunction="setCurrencyLabel">
                <mx:fill>
                    <mx:SolidColor color="0x00FF00"
                                   alpha="1"/>
                </mx:fill>
            </mx:ColumnSeries>
        </mx:series>
    </mx:ColumnChart>

[Bindable]  
private var _arrCol_chartData : ArrayCollection = new ArrayCollection([
            { ID: FREE_CASHFLOW, Month: "Free Cashflow", freeCashflow: 0, invisible: 0, invisibleTop: 5000 },
            { ID: CAPITAL_RESERVES, Month: "Capital Reserves", bottom: 0, invisible: 0 },
            { ID: REINVESTMENT_MONEY, Month: "Reinvestment Money", bottom: 0, invisible: 0 },
            { ID: PROFIT_SHARING, Month: "Profit Sharing", bottom: 0, invisible: 0 },
            { ID: DISTRIBUTABLE, Month: "Distributable", top: 0, invisible: 0 }]);


function changeDate() : void {
  _arrCol_chartData.getItemAt( 0 ).bottom = 1000;
  _arrCol_chartData.refresh();
}

Thx, Martin

Ответы [ 3 ]

0 голосов
/ 08 декабря 2009

Это известная ошибка в Flex Charting при использовании «сложенного» параметра.

https://bugs.adobe.com/jira/browse/FLEXDMV-1674

0 голосов
/ 06 февраля 2012

Попробуйте добавить диаграмму к модулю или приложению динамически в ActionScript. Это удалит его из памяти и обеспечит сброс оси.

0 голосов
/ 11 ноября 2009

Это должно сделать работу. `

a1.maximum = NaN;
a1.minimum = NaN; // or 0 if you want it based at zero{

`

редактирование:

Я изменил код, чтобы он выглядел так:

<mx:horizontalAxis>
    <mx:CategoryAxis dataProvider="{_arrCol_chartData}"
        categoryField="Month"
        id="a1"/>
</mx:horizontalAxis>
<mx:horizontalAxisRenderers>
<mx:AxisRenderer axis="{a1}"
    tickPlacement="none"
    showLabels="true"
    showLine="false"/>
</mx:horizontalAxisRenderers>

и линейная ось обновлена ​​отлично.

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