CorePlot 可见范围未按预期工作

CorePlot Visible Range Not Working As Expected

所以我一直在修改示例代码以尝试让图表显示 0-20 的 y 值,并且一次只在屏幕上显示最多 6 个 x 值。 x 的可见范围为 0-6;

这是我正在拍摄的照片

这就是它的样子

下面是我认为最重要的代码部分。在这里,我将向您展示如何制作可见轴范围、绘制 space 范围和绘制 space 全局范围:

CPTMutablePlotRange *xRange = [plotSpace.xRange mutableCopy];
CPTMutablePlotRange *yRange = [plotSpace.yRange mutableCopy];

// I'm not sure what the difference is between the two
// constrict this to 0-20 for y and 0-6 for x
x.visibleRange = nil;
y.visibleRange = nil;
x.visibleAxisRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat(0.0f) length:CPTDecimalFromFloat(6.f)];
y.visibleAxisRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat(0.0f) length:CPTDecimalFromFloat(20.f)];

// expand the X, y axis to be more than we need
[xRange expandRangeByFactor:CPTDecimalFromDouble(1.05)];
[yRange expandRangeByFactor:CPTDecimalFromDouble(1.05)];
plotSpace.xRange = xRange;
plotSpace.yRange = yRange;

// expand it to be even bigger
[xRange expandRangeByFactor:CPTDecimalFromDouble(3.0)];
[yRange expandRangeByFactor:CPTDecimalFromDouble(3.0)];
plotSpace.globalXRange = xRange;
plotSpace.globalYRange = yRange;

所以在应用程序上显示的图片中,似乎显示了我所有的值,而不仅仅是六个,但它似乎知道我只想显示 6,因为标签停在 6。我想让应用程序左右滚动以显示其他点,然后我让它显示正确的线长,但一次只能做一件事。

这是代码。这很草率,在我清理它并将它带到我的真实项目之前,我只是四处看看有什么可能。所有工作都在 controlChart.m 文件中完成,我处理了一些 Plain White 主题文件,但这应该不重要。

coreplot-horrible-code

由于 x 数据点相隔一个单位,给 xRange 一个长度 6(再加上一点绘图符号)就可以满足您的要求。在您发布的代码中, xRange 在扩大范围之前设置为 -scaleToFitPlots: 。这使其适合所有绘图数据。