2012-01-31 5 views
0

私は、同じページに時間的に2つのデータwrtをプロットしようとしているので、2つの異なるX軸とY軸が必要です。私は2つのグラフを追加する必要が同時に機能することができるコアプロットの2つのグラフ

-(void)initialisePlot 
{ 
// Start with some simple sanity checks before we kick off 
if ((self.hostingView == nil) || (self.graphData == nil)) { 
    NSLog(@"TUTSimpleScatterPlot: Cannot initialise plot without hosting view or data."); 
    return; 
} 

if (self.graph != nil) { 
    NSLog(@"TUTSimpleScatterPlot: Graph object already exists."); 
    return; 
} 

// Create a graph object which we will use to host just one scatter plot. 
CGRect frame = [self.hostingView bounds]; 
self.graph = [[CPTXYGraph alloc] initWithFrame:frame]; 

// Add some padding to the graph, with more at the bottom for axis labels. 
self.graph.plotAreaFrame.paddingTop = 20.0f; 
self.graph.plotAreaFrame.paddingRight = 20.0f; 
self.graph.plotAreaFrame.paddingBottom = 50.0f; 
self.graph.plotAreaFrame.paddingLeft= 20.0f; 

// Tie the graph we've created with the hosting view. 
self.hostingView.hostedGraph = self.graph; 

// If you want to use one of the default themes - apply that here. 
[self.graph applyTheme:[CPTTheme themeNamed:kCPTPlainWhiteTheme]]; 

// Create a line style that we will apply to the axis and data line. 
CPTMutableLineStyle *lineStyle = [CPTMutableLineStyle lineStyle]; 
lineStyle.lineColor = [CPTColor redColor]; 
lineStyle.lineWidth = 2.0f; 

// Create a text style that we will use for the axis labels. 
CPTMutableTextStyle *textStyle = [CPTMutableTextStyle textStyle]; 
textStyle.fontName = @"Helvetica"; 
textStyle.fontSize = 14; 
textStyle.color = [CPTColor blackColor]; 

// Create the plot symbol we're going to use. 
CPTPlotSymbol *plotSymbol = [CPTPlotSymbol hexagonPlotSymbol]; 
plotSymbol.lineStyle = lineStyle; 
plotSymbol.size = CGSizeMake(8.0, 8.0); 


// Setup some floats that represent the min/max values on our axis. 
float xAxisMin = -10; 
float xAxisMax = 10; 
float yAxisMin = 0; 
float yAxisMax = 100; 

// We modify the graph's plot space to setup the axis' min/max values. 
CPTXYPlotSpace *plotSpace = (CPTXYPlotSpace *)self.graph.defaultPlotSpace; 
plotSpace.xRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat(xAxisMin) length:CPTDecimalFromFloat(xAxisMax - xAxisMin)]; 
plotSpace.yRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat(yAxisMin) length:CPTDecimalFromFloat(yAxisMax - yAxisMin)]; 

// Modify the graph's axis with a label, line style, etc. 
CPTXYAxisSet *axisSet = (CPTXYAxisSet *)self.graph.axisSet; 


axisSet.xAxis.title = @"Data X"; 
axisSet.xAxis.titleTextStyle = textStyle; 
axisSet.xAxis.titleOffset = 30.0f; 
axisSet.xAxis.axisLineStyle = lineStyle; 
axisSet.xAxis.majorTickLineStyle = lineStyle; 
axisSet.xAxis.minorTickLineStyle = lineStyle; 
axisSet.xAxis.labelTextStyle = textStyle; 
axisSet.xAxis.labelOffset = 3.0f; 
axisSet.xAxis.majorIntervalLength = CPTDecimalFromFloat(2.0f); 
axisSet.xAxis.minorTicksPerInterval = 1; 
axisSet.xAxis.minorTickLength = 5.0f; 
axisSet.xAxis.majorTickLength = 7.0f; 

axisSet.yAxis.title = @"Data Y"; 
axisSet.yAxis.titleTextStyle = textStyle; 
axisSet.yAxis.titleOffset = 40.0f; 
axisSet.yAxis.axisLineStyle = lineStyle; 
axisSet.yAxis.majorTickLineStyle = lineStyle; 
axisSet.yAxis.minorTickLineStyle = lineStyle; 
axisSet.yAxis.labelTextStyle = textStyle; 
axisSet.yAxis.labelOffset = 3.0f; 
axisSet.yAxis.majorIntervalLength = CPTDecimalFromFloat(20.0f); 
axisSet.yAxis.minorTicksPerInterval = 1; 
axisSet.yAxis.minorTickLength = 5.0f; 
axisSet.yAxis.majorTickLength = 7.0f; 

// Add a plot to our graph and axis. We give it an identifier so that we 
// could add multiple plots (data lines) to the same graph if necessary. 
CPTScatterPlot *plot = [[CPTScatterPlot alloc] init]; 



plot.dataSource = self; 
plot.identifier = @"mainplot"; 

plot.dataLineStyle = lineStyle; 
plot.plotSymbol = plotSymbol; 
[_graph reloadData]; 
[self.graph addPlot:plot]; 
} 

:ここでは私が働いているサンプルコードです。 (void)initialisePlotを使用しています:(NSUIInteger)indexOfPlotは良い選択ですか?これを使うと、一度に1つのグラフしか使用できません。これを克服することは可能でしょうか?同じページの2つのグラフと同時にプロット?

答えて

1

各グラフには独自のホスティングビューが必要です。両方のホスティングビューを共通の親のサブビューとして追加し、他のビューと同じように配置します。各ホスティングビューに異なるグラフを追加します。

関連する問題