PDA

Просмотр полной версии : mx: series


JunkieIII
29.04.2010, 01:20
всем привет
Начал переделывать свой проект, и изменил структуру своего ArrayCollection:

год Январь Февраль Март
1996 45.4 23.7 54.1
1997 45 12.1 15.9
1998 12 56 11

т.е счас ArrayCollection: (Year: 1996, Jan: 45.4, Feb:23.7, Mar:54.1)

вопрос, как начертить график. если указать yField="Jan" чертит по месяцам
нужно чтобы чертило по годам?

раньше было ArrayCollection: (Month: Jan, 1996: 45.4, 1997:23.7, 1998:54.1
Month: Feb, 1996 23.7, 1997: 12.1 )

Месяц 1996 1997 1998
Январь 45.4 45 12
Февраль 23.7 12.1 56

указывал в yField="1996" и чертило за весь год


спасибо

veles2008
29.04.2010, 23:44
а если написать yField="Year"?

JunkieIII
30.04.2010, 03:17
неа, вообще ничего не выводит(((

veles2008
30.04.2010, 20:15
код в студию

JunkieIII
01.05.2010, 00:46
такс

public function LoadXML():void {
var file:File = File.documentsDirectory.resolvePath("spogivanya.xml");
var fileStream:FileStream = new FileStream();
fileStream.open(file, FileMode.READ);
xmlSP1 = XML(fileStream.readUTFBytes(fileStream.bytesAvailable));
fileStream.close();
AddArray();
}
// ---- **************************** ---
public function AddArray():void {

var mIndex:int = 0;
var yIndex:int = 0;
var mIndexMax:int = xmlSP1.child("year")[0].child("Month").length();
dataSPtt = new ArrayCollection();


for (var yIndex = 0; yIndex < xmlSP1.child("year").length(); yIndex++) {
var obj:Object = new Object();
obj.Year = xmlSP1.year[yIndex].@["value"];
dataSPtt.addItem(obj);
}

for (var mIndex = 0; mIndex < mIndexMax; mIndex++) {
for (var yIndex = 0; yIndex < xmlSP1.child("year").length(); yIndex++) {
var name:String = xmlSP1.year[yIndex].Month[mIndex].@["name"];
dataSPtt[yIndex][name] = xmlSP1.year[yIndex].Month[mIndex];
}
}


Сам ХМЛ файл имеет вид:

<?xml version="1.0" encoding="utf-8"?>

<spogivanya>
<year value="1996">
<Month name="Jan">177.8</Month>
<Month name="Feb">391.1</Month>
<Month name="Mar">751.9</Month>
<Month name="Apr">477.3</Month>
<Month name="May">347.5</Month>
<Month name="Jun">385.6</Month>
<Month name="Jul">356.6</Month>
<Month name="Aug">347.5</Month>
<Month name="Sep">389.3</Month>
<Month name="Oct">425.0</Month>
<Month name="Nov">393.6</Month>
<Month name="Dec">354.3</Month>
</year>
<year value="1997">
<Month name="Jan"></Month>
<Month name="Feb">313.7</Month>
<Month name="Mar">393.1</Month>
<Month name="Apr">335.0</Month>
<Month name="May">355.0</Month>
<Month name="Jun">452.0</Month>
<Month name="Jul">452.0</Month>
<Month name="Aug">433.2</Month>
<Month name="Sep">458.8</Month>
<Month name="Oct">516.0</Month>
<Month name="Nov">486.0</Month>
<Month name="Dec">408.0</Month>
</year>
<year value="1998">
<Month name="Jan">227.4</Month>
<Month name="Feb">444.0</Month>
<Month name="Mar">443.1</Month>
<Month name="Apr">470.1</Month>
<Month name="May">315.5</Month>
<Month name="Jun">472.3</Month>
<Month name="Jul">545.0</Month>
<Month name="Aug">545.2</Month>
<Month name="Sep">514.5</Month>
<Month name="Oct">516.0</Month>
<Month name="Nov">512.8</Month>
<Month name="Dec"></Month>
</year>
</spogivanya>

пытаюсь пострить график так, как Вы и посоветовали(выше конечно же дата провайдер стоит = dataSPtt):

<mx:series>
<mx:LineSeries displayName="Year" yField="Year" />
</mx:series>

veles2008
01.05.2010, 10:15
Мне кажется вы имели ввиду так!

<?xml version="1.0"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">

<mx:Script>
<![CDATA[

import mx.collections.ArrayCollection;

[Bindable]
private var medalsAC:ArrayCollection = new ArrayCollection( [
{ YEAR: "1996", Jan:177, Feb:391, Mar:751 },
{ YEAR: "1997", Jan:177, Feb:391, Mar:751 },
{ YEAR: "1998", Jan:177, Feb:391, Mar:751 } ]);
]]>
</mx:Script>

<mx:Panel height="100%" width="100%" layout="horizontal">



<mx:BarChart id="bar" height="100%" width="45%"
paddingLeft="5" paddingRight="5"
showDataTips="true" dataProvider="{medalsAC}">

<mx:verticalAxis>
<mx:CategoryAxis categoryField="YEAR"/>
</mx:verticalAxis>

<mx:series>
<mx:BarSeries yField="YEAR" xField="Jan" displayName="Jan"/>
<mx:BarSeries yField="YEAR" xField="Feb" displayName="Feb"/>
<mx:BarSeries yField="YEAR" xField="Mar" displayName="Mar"/>
</mx:series>
</mx:BarChart>


</mx:Panel>
</mx:Application>

JunkieIII
02.05.2010, 15:23
Я строю :


<mx:LineChart x="10" y="0" id="linechart1" width="900" height="392" dataProvider="{medalsAC}" showDataTips="true">
<mx:backgroundElements>
<mx:GridLines direction="both"/>
</mx:backgroundElements>

<mx:series>
<mx:LineSeries displayName="Jan" yField="YEAR" xField="Jan" />
<mx:LineSeries displayName="Feb" yField="YEAR" xField="Feb"/>
<mx:LineSeries displayName="Mar" yField="YEAR" xField="Mar"/>

</mx:series>
</mx:LineChart>
<mx:DataGrid id="myGrid" x="100" y="430" width="650" height="290" editable="true" dataProvider="{dataSPtt}">
<mx:columns>
<mx:DataGridColumn headerText="Рік" dataField="Year" />
<mx:DataGridColumn headerText="Січень" dataField="Jan" />
<mx:DataGridColumn headerText="Лютий" dataField="Feb" />
<mx:DataGridColumn headerText="Березень" dataField="Mar" />
</mx:columns>
</mx:DataGrid>
<mx:Legend direction="vertical" dataProvider="{linechart1}" x="750" y="250"/>


но по прежнему ничего не строиться((((

etc
02.05.2010, 15:26
JunkieIII, отредактируйте свои посты и оформите код тегами и .

etc
02.05.2010, 16:01
JunkieIII, мне не нужен от вас новый пост с оформленным кодом. Отредактируйте предыдущие, не заставляйте людей ломать глаза.

veles2008
02.05.2010, 21:07
Где функция LoadXML() инициализируется???

JunkieIII
03.05.2010, 00:09
при старте программы
creationComplete="LoadXML()

veles2008
03.05.2010, 15:51
Если смотреть по дебагеру, то не правильно построен ArrayCollection

JunkieIII
03.05.2010, 20:54
так а как нужно?


[Bindable]
private var medalsAC:ArrayCollection = new ArrayCollection( [
{ Month: "Jan", year1996:177, year1997:391, year1998:751 },
{ Month: "Feb", year1996:177, year1997:391, year1998:751 },
{ Month: "Mar", year1996:177, year1997:391, year1998:751 } ]);
]]>



так не подойдет. так уже было построено изначально, но потом возникла задача вывести ДатаГрид. чтоб первый столбец содержал года, а остальные имели заголовки месяцев.

veles2008
03.05.2010, 22:11
Нужно так: http://ambrybox.com/gallery/1272913764394.html
а здесь так: http://ambrybox.com/gallery/1272913827319.html

JunkieIII
04.05.2010, 00:18
так а это разве не такая же структура как Вы посоветовали ранее?

[Bindable]
private var medalsAC:ArrayCollection = new ArrayCollection( [
{ YEAR: "1996", Jan:177, Feb:391, Mar:751 },
{ YEAR: "1997", Jan:177, Feb:391, Mar:751 },
{ YEAR: "1998", Jan:177, Feb:391, Mar:751 } ]);


так было бы отлично, вот я только не могу понять как построить с такой структуры график.
ось Х - месяца
ось У - значения

Добавлено через 67 часов 4 минуты
Подскажите, быть может я выбрал не правильную структуру:( ХМЛ файла для данной задачи

<?xml version="1.0" encoding="utf-8"?>

<spogivanya>
<year value="1996">
<Month name="Jan">177.8</Month>
<Month name="Feb">391.1</Month>
<Month name="Mar">751.9</Month>
<Month name="Apr">477.3</Month>
<Month name="May">347.5</Month>
<Month name="Jun">385.6</Month>
<Month name="Jul">356.6</Month>
<Month name="Aug">347.5</Month>
<Month name="Sep">389.3</Month>
<Month name="Oct">425.0</Month>
<Month name="Nov">393.6</Month>
<Month name="Dec">354.3</Month>
</year>
<year value="1997">
<Month name="Jan"></Month>
<Month name="Feb">313.7</Month>
<Month name="Mar">393.1</Month>
<Month name="Apr">335.0</Month>
<Month name="May">355.0</Month>
<Month name="Jun">452.0</Month>
<Month name="Jul">452.0</Month>
<Month name="Aug">433.2</Month>
<Month name="Sep">458.8</Month>
<Month name="Oct">516.0</Month>
<Month name="Nov">486.0</Month>
<Month name="Dec">408.0</Month>
</year>
<year value="1998">
<Month name="Jan">227.4</Month>
<Month name="Feb">444.0</Month>
<Month name="Mar">443.1</Month>
<Month name="Apr">470.1</Month>
<Month name="May">315.5</Month>
<Month name="Jun">472.3</Month>
<Month name="Jul">545.0</Month>
<Month name="Aug">545.2</Month>
<Month name="Sep">514.5</Month>
<Month name="Oct">516.0</Month>
<Month name="Nov">512.8</Month>
<Month name="Dec"></Month>
</year>
</spogivanya>


мне нужно построить годовые графики LineChart , осьХ - месяца, осьУ - значения
снизу вывести DataGrid, editable = "true"; так чтобы название колонок было названием месяцев , а первая колонка содержала все года. Как бы первая колонка и будет названием строчек
пример желаемой реализации:

------- Jan | Feb | Mar
1996 34 34 34
1997 34 45 45