Ios 如何在CorePlot中设置绘图空间的边界?

Ios 如何在CorePlot中设置绘图空间的边界?,ios,objective-c,cocoa-touch,core-plot,Ios,Objective C,Cocoa Touch,Core Plot,我正在尝试使用核心图在同一个图形上绘制多个散点图。它们具有相同的x轴(时间),但我希望它们彼此独立绘制。例如,对于两个绘图,我希望屏幕分为两部分,上部显示一个绘图,下部显示另一个绘图(我打算最终绘制实时多通道输入)。大概是这样的: 我尝试修改以下链接中给出的教程,以使用两个绘图空间而不是一个: 但是,没有设置绘图空间边界的函数。功能xRange和yRange可更改轴的范围,但两个绘图空间仍占据整个屏幕 下面是一个代码片段,它显示了我尝试通过两种方式来完成边界设置: -(void)config

我正在尝试使用核心图在同一个图形上绘制多个散点图。它们具有相同的x轴(时间),但我希望它们彼此独立绘制。例如,对于两个绘图,我希望屏幕分为两部分,上部显示一个绘图,下部显示另一个绘图(我打算最终绘制实时多通道输入)。大概是这样的:

我尝试修改以下链接中给出的教程,以使用两个绘图空间而不是一个:

但是,没有设置绘图空间边界的函数。功能xRange和yRange可更改轴的范围,但两个绘图空间仍占据整个屏幕

下面是一个代码片段,它显示了我尝试通过两种方式来完成边界设置:

-(void)configurePlots {

//Get graph and plot space
CPTGraph *graph = self.hostView.hostedGraph;
CPTXYPlotSpace *aaplPlotSpace = (CPTXYPlotSpace *)graph.defaultPlotSpace;

//**Setting xRange and yRange doesn't work**

aaplPlotSpace.xRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromCGFloat(0.0)
                                                            length:CPTDecimalFromCGFloat(graph.bounds.size.width)];
aaplPlotSpace.yRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromCGFloat(0.0)
                                                    length:CPTDecimalFromCGFloat((graph.bounds.size.height)/3)];



CPTXYPlotSpace *googPlotSpace = [[CPTXYPlotSpace alloc] init];
googPlotSpace.xRange = aaplPlotSpace.xRange;
googPlotSpace.yRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromCGFloat((graph.bounds.size.height)/3)
                                                    length:CPTDecimalFromCGFloat((graph.bounds.size.height)/3)];


[graph addPlotSpace:googPlotSpace];


//Create Plots

//**Trying to set bounds using initWithFrame doesn't work either**

CGRect rect = CGRectMake(0.0, 0.0, graph.bounds.size.width, graph.bounds.size.height/2);
CPTScatterPlot *aaplPlot = [[CPTScatterPlot alloc] initWithFrame:rect];
aaplPlot.dataSource = self;
aaplPlot.identifier = CPDTickerSymbolAAPL;
CPTColor *aaplColor = [CPTColor redColor];
[graph addPlot:aaplPlot toPlotSpace:aaplPlotSpace];

rect = CGRectMake(0.0, graph.bounds.size.height/2, graph.bounds.size.width, graph.bounds.size.height/2);
CPTScatterPlot *googPlot = [[CPTScatterPlot alloc] initWithFrame:rect];
googPlot.dataSource = self;
googPlot.identifier = CPDTickerSymbolGOOG;
CPTColor *googColor = [CPTColor greenColor];
[graph addPlot:googPlot toPlotSpace:googPlotSpace];
//[graph addPlot:googPlot];

//Set up Plot space
[aaplPlotSpace scaleToFitPlots:[NSArray arrayWithObject:aaplPlot]];
CPTMutablePlotRange *xaRange = [aaplPlotSpace.xRange mutableCopy];
[xaRange expandRangeByFactor:CPTDecimalFromCGFloat(1.1f)];
aaplPlotSpace.xRange = xaRange;
CPTMutablePlotRange *yaRange = [aaplPlotSpace.yRange mutableCopy];
[yaRange expandRangeByFactor:CPTDecimalFromCGFloat(1.2f)];
aaplPlotSpace.yRange = yaRange;

//Create styles and symbols

CPTMutableLineStyle *aaplLineStyle = [aaplPlot.dataLineStyle mutableCopy];
aaplLineStyle.lineWidth = 2.5;
aaplLineStyle.lineColor = aaplColor;
aaplPlot.dataLineStyle = aaplLineStyle;
CPTMutableLineStyle *aaplSymbolLineStyle = [CPTMutableLineStyle lineStyle];
aaplSymbolLineStyle.lineColor = aaplColor;
CPTPlotSymbol *aaplSymbol = [CPTPlotSymbol ellipsePlotSymbol];
aaplSymbol.fill = [CPTFill fillWithColor:aaplColor];
aaplSymbol.lineStyle = aaplSymbolLineStyle;
aaplSymbol.size = CGSizeMake(6.0f, 6.0f);
aaplPlot.plotSymbol = aaplSymbol;

CPTMutableLineStyle *googLineStyle = [googPlot.dataLineStyle mutableCopy];
googLineStyle.lineWidth = 1.0;
googLineStyle.lineColor = googColor;
googPlot.dataLineStyle = googLineStyle;
CPTMutableLineStyle *googSymbolLineStyle = [CPTMutableLineStyle lineStyle];
googSymbolLineStyle.lineColor = googColor;
CPTPlotSymbol *googSymbol = [CPTPlotSymbol starPlotSymbol];
googSymbol.fill = [CPTFill fillWithColor:googColor];
googSymbol.lineStyle = googSymbolLineStyle;
googSymbol.size = CGSizeMake(6.0f, 6.0f);
googPlot.plotSymbol = googSymbol;
}
我的问题是,我当前的方法在尝试设置绘图空间的边界时是否正确,还是需要在同一屏幕上绘制不同的图形并设置图形的边界?如何设置绘图空间或图形的边界(以正确的方式为准)


谢谢

如果你想让绘图空间分开,我会在同一个屏幕或iPhone的不同屏幕上绘制多个图形,因为屏幕空间非常有限。也就是说,请记住,一个绘图空间可以有多个绘图数组。我们的图形在同一个绘图空间内有多个实时线条图。我认为,如果我们使用不同类型的图形,这是行不通的。但听起来你只是在尝试做2个(或更多)散点/线图。而且,在演示的第一部分中设置了边界。请参阅本页下面约60%的“会见主机”部分:,或者如果您在演示项目的代码中,请查看configureHost函数。CPTGraphHostingView包含包含CPTPlotSpace的CPTGraph。您一定要查看下载中包含的CorePlotGallery示例项目(特别是CompositePlot)。是的,configureHost函数确实定义了边界,但它们属于CPTGraphHostingView,而不是plotspace。无论如何,我会继续这样做,因为这似乎是可行的。谢谢你的建议,也谢谢你用CompositePlot和configureHost为我指明了正确的方向。我很抱歉。在我使用过的所有示例和项目中,我只是根据需要调整宿主视图的大小,然后将同一帧分配给图形。您可以在configureGraph中指定不同的边界。如果您想定义x轴和y轴的最小/最大值,则需要使用plotSpace.xRange和yRange设置这些值。