0

我正在使用核心图在 iPhone 应用程序中显示用户体重,并且将测试数据填充到数据源数组中,它可以完美运行。但是当我手动输入数据,并且数据源数组中只有一个元素时,图形并没有缩放到图形上单点所在的适当位置。我的单个测试数据点是 42,当图表出现时,它被放大到 0-1 的 Y 范围并且该点不在屏幕上。如果我将单个测试数据点设置为 0.5,它是可见的。当我添加另一个点 (44) 时,图表会适当缩放并显示 42-44 的 Y 范围。

在创建这个应用程序时,我非常依赖Ray Wenderlich 教程。我认为 plotSpace 决定了图表的可见范围(我对使用 Core Plot 还是很陌生)。这段代码几乎是教程中的逐字记录:

// 1 - Get graph and plot space
graph = self.hostView.hostedGraph;
CPTXYPlotSpace *plotSpace = (CPTXYPlotSpace *) graph.defaultPlotSpace;

//2 - Create the Weight plot
weightPlot = [[CPTScatterPlot alloc] init];
weightPlot.dataSource = self;
CPTColor *weightColor = [CPTColor greenColor];
[graph addPlot:weightPlot toPlotSpace:plotSpace];

// 3 - Set up plot space
[plotSpace scaleToFitPlots:[NSArray arrayWithObjects:weightPlot, nil]];
CPTMutablePlotRange *xRange = [plotSpace.xRange mutableCopy];
[xRange expandRangeByFactor:CPTDecimalFromCGFloat(1.1f)];
plotSpace.xRange = xRange;
CPTMutablePlotRange *yRange = [plotSpace.yRange mutableCopy];
[yRange expandRangeByFactor:CPTDecimalFromCGFloat(1.2f)];
plotSpace.yRange = yRange;

感谢您的任何建议!如果有人认为它会有所帮助,我可以发布其余的核心情节代码。

4

1 回答 1

0

-scaleToFitPlots:方法仅从一个数据点中没有足够的信息来计算“合理”的轴范围。在这种情况下,请xRange根据yRange您拥有的数据自行设置。

于 2013-07-18T02:04:20.657 回答