2013-07-25 2 views
0

Есть ли возможность отключить определенную легенду для компонента LineSeries в линейной диаграмме.Отключить определенную легенду в линейной диаграмме

Пусть говорят, что мы имеем следующий код:

<mx:Panel title="Line Chart"> 
<mx:LineChart id="myChart" 
    dataProvider="{expenses}" 
    showDataTips="true" 
> 
    <mx:horizontalAxis> 
     <mx:CategoryAxis 
      dataProvider="{expenses}" 
      categoryField="Month" 
     /> 
    </mx:horizontalAxis> 
    <mx:series> 
     <mx:LineSeries 
      yField="Profit" 
      displayName="Profit" 
     /> 
     <mx:LineSeries 
      yField="Expenses" 
      displayName="Expenses" 
     /> 
    </mx:series> 
</mx:LineChart> 
<mx:Legend id="legend" dataProvider="{myChart}"/> 

Он будет производить следующую диаграмму линии:

enter image description here

И этот результат, что я хочу:

enter image description here

UPDATE:

Голые в виду, что я должен использовать DataProvider легенда как myChart, поскольку данные динамически строить. Кроме того, легенда настроена.

ответ

0

Получил решение, так как у меня есть пользовательские легенды я должен установить поставщик данных легенда после обновления линейной диаграммы:

// Add listener event to the linechart component for when the legend update completes so it can filter lineseries on the legend's dataprovider in [onUpdateLegendComplete] 
    myChart.addEventListener(FlexEvent.UPDATE_COMPLETE, onUpdateLinechartComplete); 

И это функция:

protected function onUpdateLinechartComplete(e:FlexEvent):void 
{ 
    legend.dataProvider = myChart.legendData[0]; 
} 
0

Вместо использования диаграммы как DataProvider, вы можете создать отдельные LegendItems

<mx:Legend> 
     <mx:LegendItem label="Profit" fill="#e48701">   
     </mx:LegendItem> 
    </mx:Legend> 

edit2: попробуйте это

<mx:Legend dataProvider="{new ArrayCollection(myChart.legendData).getItemAt(0)}"> 
+0

Благодарим вас за помощь, но я просто хочу использовать DataProvider для легенды, поскольку данные динамически построены. – kaissun

+1

см. Редактирование. Не могли бы вы более подробно рассказать о данных: изменились ли легенды? –

+0

Во-первых, второе решение не работает: объект legendItems всегда пуст, так как я динамически устанавливаю данные. Что касается данных, я читаю их из файла XML. Вот почему я точно не знаю, что такое линии, просто у меня есть свойство, которое я мог бы использовать в нем, не отображая легенду. Можно ли связать какое-либо свойство с самим компоновщиком линий? – kaissun