我在同一视图中显示两个不同的 CorePlot 图表时遇到问题。我在我的视图中设置了两个托管视图,并且所有引用插座都正确连接。只有一张图正确显示。向该方法添加一个快速的 NSLognumberForPlot
表明只有第一个图被填充 ( graph
and graphView
) 而不是第二个 ( trend
and trendView
)。这是代码:
- (void) graphSetup {
CPTTheme *theme = [CPTTheme themeNamed:kCPTPlainWhiteTheme];
graph = (CPTXYGraph *)[theme newGraph];
graphView.hostedGraph = graph;
graphView.allowPinchScaling = YES;
graph.paddingLeft = -5;
graph.paddingTop = 0;
graph.paddingRight = -5;
graph.paddingBottom = -5;
graph.fill = nil;
graph.plotAreaFrame.fill = nil;
int a = 0;
for (int i = 0; i < [romAveragesArray count]; i++) {
if ([romAveragesArray objectAtIndex:i] != NULL)
a++;
}
int localMax = 0;
int localMin = 0;
for (int a = 0; a < [romAveragesArray count]; a++) {
if ([[romAveragesArray objectAtIndex:a] getValue] > localMax)
localMax = [[romAveragesArray objectAtIndex:a] getValue];
else if ([[romAveragesArray objectAtIndex:a] getValue] < localMin)
localMin = [[romAveragesArray objectAtIndex:a] getValue];
}
for (int a = 0; a < [obaAveragesArray count]; a++) {
if ([[obaAveragesArray objectAtIndex:a] getValue] > localMax)
localMax = [[obaAveragesArray objectAtIndex:a] getValue];
else if ([[obaAveragesArray objectAtIndex:a] getValue] < localMin)
localMin = [[obaAveragesArray objectAtIndex:a] getValue];
}
CPTXYPlotSpace *plotSpace = (CPTXYPlotSpace *)graph.defaultPlotSpace;
plotSpace.xRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromInt(0)
length:CPTDecimalFromInt(145)];
NSLog(@"%d",a);
plotSpace.yRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromInt(0)
length:CPTDecimalFromInt(localMax+15)];
CPTXYAxisSet *axisSet = (CPTXYAxisSet *)graph.axisSet;
CPTXYAxis *x = axisSet.xAxis;
x.majorIntervalLength = CPTDecimalFromFloat(10);
x.minorTicksPerInterval = 2;
x.borderWidth = 0;
x.labelExclusionRanges = [NSArray arrayWithObjects:
[CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat(-100)
length:CPTDecimalFromFloat(300)],
nil];;
CPTXYAxis *y = axisSet.yAxis;
y.majorIntervalLength = CPTDecimalFromFloat(10);
y.minorTicksPerInterval = 1;
y.labelExclusionRanges = [NSArray arrayWithObjects:
[CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat(-100)
length:CPTDecimalFromFloat(300)],
nil];
CPTScatterPlot *dataSourceLinePlot = [[CPTScatterPlot alloc] init];
dataSourceLinePlot.identifier = @"Obama";
dataSourceLinePlot.dataSource = self;
CPTMutableLineStyle *style = [CPTMutableLineStyle lineStyle];
style.lineColor = [CPTColor colorWithComponentRed:0.3215686274509804 green:0.6078431372549019 blue:1.0 alpha:1.0];
dataSourceLinePlot.dataLineStyle = style;
[graph addPlot:dataSourceLinePlot];
CPTScatterPlot *dataSourceLinePlot1 = [[CPTScatterPlot alloc] init];
dataSourceLinePlot1.identifier = @"Rom";
dataSourceLinePlot1.dataSource = self;
CPTMutableLineStyle *style1 = [CPTMutableLineStyle lineStyle];
style1.lineColor = [CPTColor colorWithComponentRed:0.9803921568627451 green:0.47058823529411764 blue:0.47058823529411764 alpha:1.0];
dataSourceLinePlot1.dataLineStyle = style1;
[graph addPlot:dataSourceLinePlot1];
[self trendSetup];
[self postStats];
}
- (void) trendSetup {
CPTTheme *theme1 = [CPTTheme themeNamed:kCPTPlainWhiteTheme];
trend = (CPTXYGraph *) [theme1 newGraph];
trendView.allowPinchScaling = YES;
trendView.hostedGraph = trend;
trend.paddingLeft = -5;
trend.paddingRight = -5;
trend.paddingTop = 0;
trend.paddingBottom = -5;
trend.fill = nil;
trend.plotAreaFrame.fill = nil;
int obaMax, localMax;
for (int i = 0; i < [obaArray count]; i++)
obaMax += [[obaArray objectAtIndex:i] getValue];
int romMax;
for (int i = 0; i < [romArray count]; i++)
romMax += [[romArray objectAtIndex:i] getValue];
if (romMax > obaMax)
localMax = romMax;
else
localMax = obaMax;
CPTXYPlotSpace *trendSpace = (CPTXYPlotSpace *)trend.defaultPlotSpace;
trendSpace.xRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromInt(0) length:CPTDecimalFromInt(504)];
trendSpace.yRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromInt(0) length:CPTDecimalFromInt(localMax)];
CPTXYAxisSet *trendSet = (CPTXYAxisSet *)trend.axisSet;
CPTXYAxis *trendX = trendSet.xAxis;
trendX.majorIntervalLength = CPTDecimalFromInt(10);
trendX.minorTicksPerInterval = 2;
trendX.borderWidth = 0;
trendX.labelExclusionRanges = [NSArray arrayWithObjects:[CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat(-100) length:CPTDecimalFromFloat(300)], nil];;
CPTXYAxis *trendY = trendSet.xAxis;
trendY.majorIntervalLength = CPTDecimalFromInt(10);
trendY.minorTicksPerInterval = 2;
trendY.borderWidth = 0;
trendY.labelExclusionRanges = [NSArray arrayWithObjects:[CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat(-100) length:CPTDecimalFromFloat(300)], nil];;
CPTScatterPlot *trendSourceLinePlot = [[CPTScatterPlot alloc] init];
trendSourceLinePlot.identifier = @"Obama Trend";
trendSourceLinePlot.dataSource = self;
CPTMutableLineStyle *style3 = [CPTMutableLineStyle lineStyle];
style3.lineColor = [CPTColor colorWithComponentRed:0.3215686274509804 green:0.6078431372549019 blue:1.0 alpha:1.0];
trendSourceLinePlot.dataLineStyle = style3;
[trend addPlot:trendSourceLinePlot];
CPTScatterPlot *trendSourceLinePlot1 = [[CPTScatterPlot alloc] init];
trendSourceLinePlot1.identifier = @"Rom Trend";
trendSourceLinePlot1.dataSource = self;
CPTMutableLineStyle *style4 = [CPTMutableLineStyle lineStyle];
style4.lineColor = [CPTColor colorWithComponentRed:0.9803921568627451 green:0.47058823529411764 blue:0.47058823529411764 alpha:1.0];
trendSourceLinePlot1.dataLineStyle = style4;
[trend addPlot:trendSourceLinePlot1];
}