Как показать месяцы, сгруппированные по годам, на горизонтальной оси для гибкой линейной диаграммы? - PullRequest
0 голосов
/ 04 ноября 2010

В основном у меня есть Flex Line Chart, а ось X выглядит следующим образом:

 ---|--------|--------|--------|--------|--------|--------|---
 November December January February   March    April     May

Это хорошо, но я также хочу показать год, к которому относятся месяцы, например:

 ---|--------|--------|--------|--------|--------|--------|---
 November December January February   March    April     May
       2010           |                2011

Мой поставщик данных представляет собой XML-документ, который выглядит следующим образом:

<Chart>
    <Month count="1"  month="November" year="2010" />
    <Month count="5"  month="December" year="2010" />
    <Month count="0"  month="January"  year="2011" />
    <Month count="10" month="February" year="2011" />
    <Month count="3"  month="March"    year="2011" />
    <Month count="9"  month="April"    year="2011" />
    <Month count="3"  month="May"      year="2011" />
</Chart>

И вот что у меня есть для элемента управления LineChart:

<mx:LineChart 
    height="100%" 
    width="100%" 
    dataProvider="{this._report.Month}">
    <mx:backgroundElements>
        <mx:GridLines>
            <mx:horizontalStroke>
                <mx:Stroke color="0x000000" weight="1" />
            </mx:horizontalStroke>
        </mx:GridLines>
    </mx:backgroundElements>
    <mx:horizontalAxisRenderers>
        <mx:AxisRenderer
            axis="{months}"
            axisStroke="{axis}"
            placement="bottom"
            tickLength="5"
            tickPlacement="outside"
            labelRotation="45">
            <mx:tickStroke>{ticks}</mx:tickStroke>
        </mx:AxisRenderer>
    </mx:horizontalAxisRenderers>
    <mx:verticalAxisRenderers>
        <mx:AxisRenderer
            axis="{countForMonths}"
            axisStroke="{axis}"
            placement="bottom"
            tickLength="5"
            tickPlacement="outside"
            minorTickPlacement="none">
            <mx:tickStroke>{ticks}</mx:tickStroke>
        </mx:AxisRenderer>
    </mx:verticalAxisRenderers>
    <mx:horizontalAxis>
        <mx:CategoryAxis id="months" categoryField="@month"/>
    </mx:horizontalAxis>
    <mx:verticalAxis>
        <mx:LinearAxis id="countForMonths" />
    </mx:verticalAxis>
    <mx:series>
        <mx:LineSeries
            yField="@count" 
            displayName="Report" 
            lineStroke="{myreportstroke}"/>
    </mx:series>
</mx:LineChart>

Я потратил часы, пытаясь найти пример, который делает что-то подобное без удачи.В документации Flex есть несколько примеров, которые показывают несколько осей на оси Y, но ни одного для оси X.

Я видел несколько других вопросов, опубликованных другими людьми, которые хотят сделать что-то подобное, но большинство из них так и не получили ответа, или ответ был на документацию по нескольким осям - что я уже сделал.1017 *

Я нашел это на сайте IBM для одного из их компонентов Flex.Кажется, это указывает на то, что можно отформатировать ось так, как я хочу.Мне просто нужен кто-то, чтобы направить меня в правильном направлении.

1 Ответ

0 голосов
/ 04 ноября 2010

Очень интересная проблема.Собираюсь разобраться в этом.Отправная точка для меня будет здесь: http://christianyates.com/blog/flex/displaying-multiple-axes-single-series-flex-charts

...