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 配列に格納します。
もう少し詳しく説明します...グラフは最初と2番目のビューに表示されますが、範囲外のように見えます.原因の一部しか見ることができません...しかし、3番目のグラフは正しく表示されます..何か関係があると思います範囲または軸..