Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 绘制第二个绘图空间_Objective C_Core Plot - Fatal编程技术网

Objective c 绘制第二个绘图空间

Objective c 绘制第二个绘图空间,objective-c,core-plot,Objective C,Core Plot,我有两个绘图空间 //First Plot Space self.plotSpace1 =(CPTXYPlotSpace *) self.hostingView.hostedGraph.defaultPlotSpace; [self.plotSpace1 setYRange: [CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat(0) length:CPTDecimalFromFloat(100)]]; [self.plotSpace

我有两个绘图空间

//First Plot Space
self.plotSpace1 =(CPTXYPlotSpace *) self.hostingView.hostedGraph.defaultPlotSpace;

[self.plotSpace1 setYRange: [CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat(0) length:CPTDecimalFromFloat(100)]];

[self.plotSpace1 setXRange: [CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat(([startNumber floatValue]/1000000) ) length:CPTDecimalFromFloat( ([endLength floatValue]/1000000))]];

//Second Plot Space
self.plotSpace2 =(CPTXYPlotSpace *) [self.hostingView.hostedGraph newPlotSpace];
[self.plotSpace2 setGraph:self.hostingView.hostedGraph];
[self.plotSpace2 setYRange: [CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat(0) length:CPTDecimalFromFloat(1)]];
[self.plotSpace2 setXRange: [CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat( ([startNumber floatValue]/1000000) ) length:CPTDecimalFromFloat( ([endLength floatValue]/1000000) )]];
[self.plotSpace2 setIdentifier:@"PLOT2"];

[self.plotSpace2 setAllowsUserInteraction:YES];

[self.hostingView.hostedGraph addPlotSpace:self.plotSpace2];
当我向第二个绘图空间添加绘图时,如下所示

CPTScatterPlot* plot = [[CPTScatterPlot alloc] initWithFrame:CGRectZero];
plot.title = plotTitle;
plot.dataSource = self;
[plot setPlotSpace:self.plotSpace2];
[self.hostingView.hostedGraph addPlot:plot toPlotSpace:self.plotSpace2];
我像这样添加第二个y轴-显示第二个y轴

CPTXYAxis *rightY = [(CPTXYAxis *)[CPTXYAxis alloc] initWithFrame:CGRectZero];
rightY.axisConstraints = [CPTConstraints constraintWithUpperOffset:0.0];
rightY.coordinate = CPTCoordinateY;
rightY.plotSpace = self.plotSpace2;


//Labeling and intervals
rightY.labelingPolicy = CPTAxisLabelingPolicyFixedInterval;
rightY.majorIntervalLength = CPTDecimalFromCGFloat(0.1f);
rightY.minorTicksPerInterval = 5;

rightY.orthogonalCoordinateDecimal = CPTDecimalFromDouble(self.plotSpace2.xRange.locationDouble + self.plotSpace2.xRange.lengthDouble);
rightY.title = nil;


//Format and position
rightY.titleTextStyle = axisTitleStyle;
rightY.titleOffset = 20.0f;
rightY.axisLineStyle = axisLineStyle;
rightY.labelTextStyle = axisTextStyle;
rightY.labelOffset = 2.0f;
rightY.majorTickLineStyle = axisLineStyle;
rightY.majorTickLength = 4.0f;
rightY.minorTickLength = 2.0f;
rightY.tickDirection = CPTSignPositive;

axisSet.axes = [NSArray arrayWithObjects:x, y, rightY, nil];
这条线没有标出来。但是,如果将其添加到plotSpace1(默认打印空间),则会打印它


我已经在这上面呆了一段时间了。我拼命地寻找答案。非常感谢您的帮助。

第一个绘图空间的
yRange
范围为0到100,而第二个
yRange
范围为0到1。打印数据可能在可见打印范围之外

您只应将绘图添加到图形中一次:

CPTScatterPlot* plot = [[CPTScatterPlot alloc] initWithFrame:CGRectZero];
plot.title = plotTitle;
plot.dataSource = self;
[self.hostingView.hostedGraph addPlot:plot toPlotSpace:self.plotSpace2];

嘿,埃里克,谢谢你的回复。我是新的核心情节,我可能不完全理解我在这里做什么。我基于第二个绘图空间添加了第二个y轴,它显示0到1,与0到100 y轴对齐。。这意味着1与100一致。我本以为第二个y轴的值,大约是.14,将基于该轴显示,所以。在0到100的绘图空间上接近14。即使如此,该值仍在0到100之间。你能告诉我如何理解可见打印范围的工作原理吗?0.14介于0和1之间,因此它应该在任一打印空间内可见。
visibleRange
axis属性仅控制轴的标记和绘制方式,对绘图没有影响。通常,轴线绘制为绘图区域的全宽或全高;通过此属性,可以约束线,使其仅延伸到绘图区域的一部分。那么,我需要朝哪个方向查看,才能获得一条线,该线沿着一个独立的y轴,而不是其余的y轴?是否有第二个y轴与第二个绘图空间相连?它是否显示了预期的范围?另外,请参阅我编辑的答案。谢谢Eric,我的代码中注释掉了额外的绘图添加行。我把它从这里移走了。我在两者之间切换,如果我使用简单的“添加”绘图,就会显示线条。打印到绘图空间--无线条。