【发布时间】:2015-04-17 08:02:08
【问题描述】:
我已经确定了一些灵活的方法来确定图表和轴的大小,但是我对 CPTScatterPlotInterpolationCurved 有疑问,因为它可能高于提供的最大数据(无法轻松计算出多少)。
有没有可以插值后返回最大值的属性或方法?
这里的例子(看顶切@绿色勾号)
计算边界的代码:
// Setup scatter plot space
CPTXYPlotSpace *plotSpace = (CPTXYPlotSpace *)self.graph.defaultPlotSpace;
CGFloat margin = [[self.dataArray valueForKeyPath:@"@max.floatValue"] integerValue]*0.10;
double xLow = 0.0f;
double yHigh = 0;
double yLow = 0;
double xHigh = [self drawnDataTilPlot:self.graph.allPlots.lastObject] + [self.dividedDataArray.lastObject count]-1;
if (round([[self.dataArray valueForKeyPath:@"@max.floatValue"] integerValue]/10)*10 < [[self.dataArray valueForKeyPath:@"@max.floatValue"] integerValue]) {
yHigh = [[self.dataArray valueForKeyPath:@"@max.floatValue"] integerValue] + margin;
}
else {
yHigh = round([[self.dataArray valueForKeyPath:@"@max.floatValue"] integerValue]/10)*10+margin;
}
if (self.type == GRChartTypeScatterLine) {
yLow = [[self.dataArray valueForKeyPath:@"@min.floatValue"] integerValue];
yLow -= margin*0.5;
yHigh -= yLow;
}
plotSpace.xRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat(xLow) length:CPTDecimalFromFloat(xHigh)];
if ([[self.dataArray valueForKeyPath:@"@max.integerValue"]integerValue]==0 &&
[[self.dataArray valueForKeyPath:@"@min.integerValue"]integerValue]==0){
plotSpace.yRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat(-1) length:CPTDecimalFromFloat(2)];
}
else {
plotSpace.yRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat(yLow) length:CPTDecimalFromFloat(yHigh)];
}
【问题讨论】:
-
ofc [_graph.defaultPlotSpace scaleToFitPlots:[_graph allPlots]];不起作用;)
标签: charts core-plot interpolation