无法使用核心图iOS在3个不同视图中绘制3个图

我正在使用核心图库来绘制一个图在3个不同的视图..问题是3之间只有3图得到正确显示…但是,如果我分别绘制每个图,然后他们总是显示出正确的..任何线索会对我有很大的帮助。谢谢

//In ViewWillAppear -(void) viewWillAppear:(BOOL)animated { dataPoints = [[NSMutableArray alloc]init]; // Create graph from theme CPTgraph1 = [(CPTXYGraph *)[CPTXYGraph alloc] initWithFrame:CGRectZero]; CPTTheme *theme = [CPTTheme themeNamed:kCPTDarkGradientTheme]; [CPTgraph1 applyTheme:theme]; CPTXYPlotSpace *plotSpace1; plotSpace1= (CPTXYPlotSpace *)CPTgraph1.defaultPlotSpace; CPTScatterPlot *dataSourceLinePlot1 = [(CPTScatterPlot *)[CPTScatterPlot alloc] initWithFrame:CPTgraph1.bounds]; CPTgraph2 = [(CPTXYGraph *)[CPTXYGraph alloc] initWithFrame:CGRectZero]; //CPTTheme *theme = [CPTTheme themeNamed:kCPTDarkGradientTheme]; [CPTgraph2 applyTheme:theme]; CPTXYPlotSpace *plotSpace2; plotSpace2= (CPTXYPlotSpace *)CPTgraph2.defaultPlotSpace; CPTScatterPlot *dataSourceLinePlot2 = [(CPTScatterPlot *)[CPTScatterPlot alloc] initWithFrame:CPTgraph2.bounds]; CPTgraph3 = [(CPTXYGraph *)[CPTXYGraph alloc] initWithFrame:CGRectZero]; //CPTTheme *theme = [CPTTheme themeNamed:kCPTDarkGradientTheme]; [CPTgraph3 applyTheme:theme]; CPTXYPlotSpace *plotSpace3; plotSpace3= (CPTXYPlotSpace *)CPTgraph3.defaultPlotSpace; CPTScatterPlot *dataSourceLinePlot3 = [(CPTScatterPlot *)[CPTScatterPlot alloc] initWithFrame:CPTgraph3.bounds]; [self plotGraph:graph1 withData:"SomeData" withGraph:CPTgraph1 withPlotSpace:plotSpace1 withCPTScatterPlot:dataSourceLinePlot1]; [self plotGraph:graph2 withData:"Some Data" withGraph:CPTgraph2 withPlotSpace:plotSpace2 withCPTScatterPlot:dataSourceLinePlot2]; [self plotGraph:graph3 withData:"Some Data" withGraph:CPTgraph3 withPlotSpace:plotSpace3 withCPTScatterPlot:dataSourceLinePlot3]; } -(void)plotGraph :(CPTGraphHostingView *)graphView withData:(NSMutableArray*)refData withGraph:(CPTXYGraph *) graph withPlotSpace:(CPTXYPlotSpace *) plotSpace withCPTScatterPlot:(CPTScatterPlot *)dataSourceLinePlot { [self readFromData:refData]; graphView.hostedGraph = graph; graph.paddingLeft = 0.0; graph.paddingTop = 0.0; graph.paddingRight = 0.0; graph.paddingBottom = 0.0; graph.plotAreaFrame.paddingLeft = 10.0; graph.plotAreaFrame.paddingTop = 10.0; graph.plotAreaFrame.paddingRight = 10.0; graph.plotAreaFrame.paddingBottom = 10.0; graph.plotAreaFrame.plotArea.fill = graph.plotAreaFrame.fill; graph.plotAreaFrame.fill = nil; graph.plotAreaFrame.borderLineStyle = nil; graph.plotAreaFrame.cornerRadius = 0.0; plotSpace.xRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromDouble(minimumValueForXAxis) length:CPTDecimalFromDouble( maximumValueForXAxis)]; plotSpace.yRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromDouble(minimumValueForYAxis) length:CPTDecimalFromDouble(ceil( (maximumValueForYAxis - minimumValueForYAxis) / majorIntervalLengthForY ) * majorIntervalLengthForY)]; CPTXYAxisSet *axisSet = (CPTXYAxisSet *)graph.axisSet; // Grid line styles CPTMutableLineStyle *majorGridLineStyle = [CPTMutableLineStyle lineStyle]; majorGridLineStyle.lineWidth = 0.75; majorGridLineStyle.lineColor = [[CPTColor colorWithGenericGray:0.2] colorWithAlphaComponent:0.75]; CPTMutableLineStyle *minorGridLineStyle = [CPTMutableLineStyle lineStyle]; minorGridLineStyle.lineWidth = 0.25; minorGridLineStyle.lineColor = [[CPTColor whiteColor] colorWithAlphaComponent:0.1]; CPTXYAxis *x = axisSet.xAxis; x.minorTicksPerInterval = 9; x.majorIntervalLength = CPTDecimalFromDouble(majorIntervalLengthForX); x.labelOffset = 5.0; x.axisConstraints = [CPTConstraints constraintWithLowerOffset:0.0]; CPTXYAxis *y = axisSet.yAxis; y.minorTicksPerInterval = 9; y.majorIntervalLength = CPTDecimalFromDouble(majorIntervalLengthForY); y.labelOffset = 5.0; y.majorGridLineStyle = majorGridLineStyle; y.minorGridLineStyle = minorGridLineStyle; y.axisConstraints = [CPTConstraints constraintWithLowerOffset:0.0]; dataSourceLinePlot.identifier = @"Data Source Plot"; CPTMutableLineStyle *lineStyle = [dataSourceLinePlot.dataLineStyle mutableCopy]; lineStyle.lineWidth = 1.0; lineStyle.lineColor = [CPTColor orangeColor]; dataSourceLinePlot.dataLineStyle = lineStyle; dataSourceLinePlot.dataSource = self; [graph addPlot:dataSourceLinePlot toPlotSpace:plotSpace]; } 

方法readFromData将只计算x,y值并将其存储在dataPoints数组中。

只是详细一点点…图显示在第一和第二个意见,但似乎超出范围,因为我只能看到它的一部分…但第三个图得到正确显示..我猜这是有关范围或轴..

情节

所有三个地块的地块空间都使用相同的地块范围。 你的情节数据是否适合这个范围? 如果不是,则需要为每个图计算不同的绘图范围。