grasping at straws, have you tried a bubble chart instead? I suspect the series are derived from the same root.
or maybe you could subclass the plotseries and overload updateTransform or some other suitable method. just ideas I managed to get my similar problem basically working by writing a fair bit of code that made sure the bound data actually changed. In my case (which I think was different) I was not quite binding correctly so the data I was changing was not causing the update. I haven't cracked it completely and I'm certain that I get situations where item renderers are "re-used" as new data points occasionally have the same colour properties as data points which have been removed from the chart and are inappropriate for their data. All a bit mysterious I'm afraid. Is the charting code going open source? --- In flexcoders@yahoogroups.com, "carl_steinhilber" <[EMAIL PROTECTED]> wrote: > > Anybody have ANY insight? > > Bueller? Bueller? > > > --- In flexcoders@yahoogroups.com, "carl_steinhilber" > <carl_steinhilber@> wrote: > > > > --- In flexcoders@yahoogroups.com, "Ely Greenfield" <egreenfi@> wrote: > > > Hi Carl. I'd like to help, but I really need to see your code. > > > Again, a very simple example... > > > > Thanks Ely. I've trimmed it down as much as I think I can... I have a > > lot more going on, but this is it in it's basic form... and it still > > exhibits the same issues. > > > > MXML > > ============================================== > > <?xml version="1.0" encoding="utf-8"?> > > <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" > > creationComplete="appInit()" layout="absolute"> > > <mx:Script> > > <![CDATA[ > > [Bindable] > > public var localData:Array; > > > > private function appInit(){ > > localData = [ > > {"name":"Plot > > A","xAxis":"5","yAxis":"6","size":"240000","visible":"1"}, > > {"name":"Plot > > B","xAxis":"-5","yAxis":"6","size":"500000","visible":"1"}, > > {"name":"Plot > > C","xAxis":"5","yAxis":"-6","size":"500000","visible":"1"} > > ]; > > } > > private function redrawChart(){ > > plotClient.dataProvider = gridClient.dataProvider; > > } > > ]]> > > </mx:Script> > > > > <mx:HBox> > > <mx:Panel width="100%" height="100%"> > > <mx:PlotChart id="plotClient" height="100%" width="100%" > > dataProvider="{localData}" axisTitleStyleName="linearAxis" > > paddingBottom="20" paddingLeft="20" paddingRight="20" paddingTop="20" > > showDataTips="true" > > > <mx:horizontalAxis> > > <mx:LinearAxis baseAtZero="false" maximum="11" minimum="-11" > > title="< X Axis >" /> > > </mx:horizontalAxis> > > <mx:verticalAxis> > > <mx:LinearAxis baseAtZero="false" maximum="11" minimum="-11" > > title="< Y Axis >" /> > > </mx:verticalAxis> > > <mx:series> > > <mx:PlotSeries displayName="Chart" id="chartPlotSeries" > > itemRenderer="ClientItemRenderer" xField="xAxis" yField="yAxis" /> > > </mx:series> > > </mx:PlotChart> > > </mx:Panel> > > <mx:Panel width="100%" height="100%"> > > <mx:DataGrid dataProvider="{localData}" click="redrawChart()" > > editable="true" height="100%" id="gridClient" name="gridClient" > > width="100%" > > > <mx:columns> > > <mx:DataGridColumn dataField="name" headerText="Name" > > textAlign="left" /> > > <mx:DataGridColumn dataField="xAxis" headerText="X Axis" /> > > <mx:DataGridColumn dataField="yAxis" headerText="Y Axis" /> > > <mx:DataGridColumn dataField="size" headerText="Size" /> > > <mx:DataGridColumn dataField="visible" headerText="Show" /> > > </mx:columns> > > </mx:DataGrid> > > </mx:Panel> > > </mx:HBox> > > </mx:Application> > > > > And my ClientItemRenderer AS is pretty much just a revision of the > > samples on QuietlyScheming > > > > ClientItemRenderer.as > > ============================================== > > package > > { > > import mx.skins.ProgrammaticSkin; > > import flash.geom.Rectangle; > > import mx.graphics.*; > > import flash.display.Graphics; > > import mx.core.IDataRenderer; > > > > import mx.charts.ChartItem; > > import flash.events.MouseEvent; > > import mx.core.UIComponent; > > import mx.controls.Label; > > import mx.charts.PlotChart; > > import mx.charts.series.items.PlotSeriesItem; > > import flash.events.Event; > > import mx.events.FlexEvent; > > > > public class ClientItemRenderer extends UIComponent implements > > IDataRenderer > > { > > private var _label:Label; > > private var _status:Label; > > private var _itemFill:uint; > > private var _itemVisible:Boolean; > > private var _itemSize:int; > > private var _itemXAxis:int; > > private var _itemYAxis:int; > > > > public function ClientItemRenderer() > > { > > super(); > > _label = new Label(); > > addChild(_label); > > _label.setStyle("color",0x000000); > > _status = new Label(); > > addChild(_status); > > _status.setStyle("color",0x000000); > > } > > private var _chartItem:ChartItem; > > > > public function get data():Object > > { > > return _chartItem; > > } > > > > public function set data(value:Object):void > > { > > if (_chartItem == value) > > return; > > _chartItem = ChartItem(value); > > _itemVisible = false; > > > > if(_chartItem != null){ > > _itemXAxis = _chartItem.item.xAxis; > > _itemYAxis = _chartItem.item.yAxis; > > > > var clientRev = _chartItem.item.size; > > _itemSize = 1; > > if (int(clientRev) > 250000) _itemSize = 2; > > if (int(clientRev) > 500000) _itemSize = 3; > > if (int(clientRev) > 750000) _itemSize = 4; > > if (int(clientRev) > 999999) _itemSize = 5; > > if (_chartItem.item.visible==1) _itemVisible = true; > > _label.text = _chartItem.item.name; > > _status.text = String(_itemSize); > > > > _itemFill = 0xFFA023; > > if (_itemXAxis < 0 && _itemYAxis < 0) _itemFill = 0xFF0000; > > if (_itemXAxis >= 0 && _itemYAxis >= 0) _itemFill = > 0x26B417; > > } > > this.invalidateProperties(); > > } > > > > private var _over:Boolean = false; > > > > private static var rcFill:Rectangle = new Rectangle(); > > > > override protected function > > updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void > > { > > super.updateDisplayList(unscaledWidth, unscaledHeight); > > if (_itemVisible){ > > var fill:* = (_over)? 0x0000FF:_itemFill; > > var w:Number = (_itemSize - 1) * 4; > > var g:Graphics = graphics; > > g.clear(); > > g.beginFill(fill); > > g.drawCircle( unscaledWidth / 2, > > unscaledHeight / 2, > > unscaledWidth / 2 + w); > > g.endFill(); > > > > > _label.setActualSize(_label.getExplicitOrMeasuredWidth(),_label.getExplicitOrMeasuredHeight()); > > _label.move(unscaledWidth/2 - > > _label.getExplicitOrMeasuredWidth()/2,- (15 + w)); > > } > > } > > > > } > > } > > > > At designtime, if I set the visible of any of the items in localData > > to 0, or adjust the size, the chart renders as expected when the app > > is launched. > > > > And at runtime, if I change the values for XAxis and/or YAxis in the > > dataGrid, the items on the chart move as expected. But changing the > > values for size or visible, however, don't redraw the items. And if I > > move an item into the lowerleft quadrant, where it should paint as red > > fill, it retains the fill that it was initially drawn as instead. > > > > I tried adding invalidateDisplayList() and validateNow() to the > > redrawChart() function and it had no effect. > > > > Any help would be much appreciated! > > Thanks, > > -Carl > > >