我正在使用 core-plot 库在 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 数组中。
再详细说明一下...图表确实显示在第一和第二个视图中,但似乎超出了范围,因为我只能看到其中的一部分...但是第三个图表可以正确显示..我想它与范围或轴..