1
我想在描述動畫散點圖: How to add animation to scatter graph using core plot?使CPTScatterPlot動畫一次繪製一個點。附加線原點
但我在那裏遇到一個額外的線被吸引到零點的問題。這裏是我的問題的圖像:
http://i.stack.imgur.com/OizxH.png
我發現了Coreplot谷歌組的主題描述了同樣的問題: https://groups.google.com/forum/#!searchin/coreplot-discuss/reloadDataInIndexRange/coreplot-discuss/ACpzO9neSsI/sgpv9UE4Xg0J
我試圖實現這是有描述的修補程序,但問題依然存在。這裏是我的代碼:
- (void) updateData
{
_count = 0;
[NSTimer scheduledTimerWithTimeInterval:0.01 target:self selector:@selector(animateGraph:) userInfo:nil repeats:YES];
}
- (void)animateGraph:(NSTimer *)timer
{
if (_count < PREDICT_MINUTES) {
[[self.graph plotWithIdentifier:@"estimatedBGPlot"] reloadDataInIndexRange:NSMakeRange(_count, 1)];
} else {
[timer invalidate];
}
_count += 1;
}
這是我設置的圖形做:
//Make the boundaries of the graph and hosting view the size of the containing view.
self.graph = [[CPTXYGraph alloc] initWithFrame:CGRectMake(0, 0, 320, 250)];
CPTGraphHostingView *hostingView = [[CPTGraphHostingView alloc] initWithFrame:CGRectMake(0, 0, 320, 250)];
[self.view addSubview:hostingView];
hostingView.hostedGraph = self.graph;
hostingView.collapsesLayers = NO;
//Pad the plot area. This ensures that the tick marks and labels
//will show up as is appropriate.
self.graph.plotAreaFrame.paddingBottom = 30.0;
self.graph.paddingBottom = 0.0;
self.graph.paddingTop = 0.0;
self.graph.paddingLeft = 0.0;
self.graph.paddingRight = 0.0;
//This is shared by all graphs in the plotSpace.
//It sets the coordinates of the axes
CPTXYPlotSpace *plotSpace = (CPTXYPlotSpace *)self.graph.defaultPlotSpace;
plotSpace.xRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat(0)
length:CPTDecimalFromFloat(PREDICT_MINUTES)];
plotSpace.yRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat(0) length:CPTDecimalFromFloat(300)];
CPTXYAxisSet *axisSet = (CPTXYAxisSet *)self.graph.axisSet;
CPTXYAxis *x = axisSet.xAxis;
CPTXYAxis *y = axisSet.yAxis;
x.orthogonalCoordinateDecimal = CPTDecimalFromFloat(0);
y.orthogonalCoordinateDecimal = CPTDecimalFromFloat(0);
CPTMutableLineStyle *clearStyle = [CPTMutableLineStyle lineStyle];
clearStyle.lineColor = [CPTColor clearColor];
CPTMutableLineStyle *thickWhiteStyle = [CPTMutableLineStyle lineStyle];
thickWhiteStyle.lineColor = [CPTColor whiteColor];
thickWhiteStyle.lineWidth = 2.0f;
x.majorIntervalLength = [[NSNumber numberWithInt:30] decimalValue];
x.minorTicksPerInterval = 1;
x.majorTickLineStyle = thickWhiteStyle;
x.minorTickLineStyle = clearStyle;
x.axisLineStyle = clearStyle;
x.minorTickLength = 5.0f;
x.majorTickLength = 7.0f;
x.labelOffset = 3.0f;
x.labelingPolicy = CPTAxisLabelingPolicyNone;
CPTScatterPlot* estimatedBGPlot = [[CPTScatterPlot alloc] initWithFrame:self.graph.defaultPlotSpace.accessibilityFrame];
estimatedBGPlot.identifier = @"estimatedBGPlot";
estimatedBGPlot.interpolation = CPTScatterPlotInterpolationCurved;
CPTMutableLineStyle *ls1 = [CPTMutableLineStyle lineStyle];
ls1.lineWidth = 4.0f;
ls1.lineColor = [CPTColor whiteColor];
estimatedBGPlot.dataLineStyle = ls1;
estimatedBGPlot.dataSource = self;
[self.graph addPlot:estimatedBGPlot];
CPTScatterPlot* predictPlot = [[CPTScatterPlot alloc] initWithFrame:self.graph.defaultPlotSpace.accessibilityFrame];
predictPlot.identifier = @"predictPlot";
predictPlot.interpolation = CPTScatterPlotInterpolationCurved;
CPTMutableLineStyle *ls2 = [CPTMutableLineStyle lineStyle];
ls2.lineWidth = 3.0f;
ls2.lineColor = [CPTColor greenColor];
ls2.dashPattern=[NSArray arrayWithObjects:[NSDecimalNumber numberWithInt:5],[NSDecimalNumber numberWithInt:5],nil];
predictPlot.dataLineStyle = ls2;
predictPlot.dataSource = self;
[self.graph addPlot:predictPlot];
從'-numberOfRecordsForPlot返回什麼樣的價值:'?它是否返回大於'_count'的值? –
是的,numberOfRecordsForPlot總是大於_count。我正在嘗試繪製可用點的子集。當我NSLog時,numberOfRecordsForPlot返回了580,而_count一直遞增到180.圖上的x範圍是從0到180.如果用戶向左滑動,我希望能夠擴展這個範圍。直到最終達到580.但現在我只是繪製了前180個值。 – user3030055