核心绘图条形图Y轴问题

时间:2013-06-07 22:04:26

标签: ios core-plot

我正在尝试制作带有核心情节的条形图。我无法正确地缩放y轴或在正确的位置使用刻度线。我最大的问题是,如果我设置:

CPTXYPlotSpace *plotSpace = (CPTXYPlotSpace *) graph.defaultPlotSpace;
plotSpace.yRange = [CPTPlotRange plotRangeWithLocation:CPTDEcimalFromFloat(0) length:CPTDecimalFromFloat(max_value);

并且max_value高于10,图表加载需要不合理的时间。例如,我需要max_value大约1000来显示所有值的顶部但是当我将其设置为1000时,加载屏幕需要15秒。但如果我把它设置为10,我的条形图会占据整个屏幕,你看不到顶部。

这是处理此问题的代码的其余部分。任何建议将不胜感激。

CPTXYPlotSpace *plotSpace = (CPTXYPlotSpace *) graph.defaultPlotSpace;
plotSpace.yRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat(0)
                                                length:CPTDecimalFromFloat(1000)];
[plotSpace scaleToFitPlots:[NSArray  arrayWithObjects:_liftOffPlot,_sideLeanPlot,_forwardLeanPlot,_crossLegsPlot,nil]];
graph.plotAreaFrame.borderLineStyle = nil;


axisSet.yAxis.title = @"times completed";
axisSet.yAxis.titleTextStyle = axisTitleStyle;
axisSet.yAxis.titleOffset = -25.0f;
axisSet.yAxis.axisLineStyle = nil;

axisSet.yAxis.labelingPolicy = CPTAxisLabelingPolicyAutomatic;
axisSet.yAxis.preferredNumberOfMajorTicks = 10;
axisSet.yAxis.minorTicksPerInterval = 1;
axisSet.yAxis.minorTickLocations = nil;
axisSet.yAxis.majorTickLocations = nil;
axisSet.yAxis.title = @"times completed";
axisSet.yAxis.titleTextStyle = axisTitleStyle;
axisSet.yAxis.titleOffset = -25.0f;
axisSet.yAxis.axisLineStyle = nil;

axisSet.yAxis.majorIntervalLength = CPTDecimalFromString(@"100");
axisSet.yAxis.orthogonalCoordinateDecimal = CPTDecimalFromString(@"0");

axisSet.yAxis.visibleRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromInt(0) length:CPTDecimalFromInt(1000)]; 
axisSet.yAxis.gridLinesRange = axisSet.yAxis.visibleRange;

1 个答案:

答案 0 :(得分:2)

由于我似乎找到了大多数xcode的东西,所以关于你放置代码的地方。如果我有CPTPlotRange:PlotRangeWithLocation:在我进行设置之前的长度它真的很慢而且有错误。相反,在设置轴的其他值后,我将它添加到我的代码的末尾,突然只有非常小的延迟。我实际上从教程中获得了这段代码并对其进行了修改以适应我的需要,但我猜教程没有相同的延迟,因为数据的长度要低得多。

所以我所做的就是修复这个问题,在我的轴设置之后而不是之前设置了以下代码;

CPTXYPlotSpace *plotSpace = (CPTXYPlotSpace *) graph.defaultPlotSpace;
plotSpace.yRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat(0)
                                            length:CPTDecimalFromFloat(1000)];
[plotSpace scaleToFitPlots:[NSArray     arrayWithObjects:_liftOffPlot,_sideLeanPlot,_forwardLeanPlot,_crossLegsPlot,nil]];
graph.plotAreaFrame.borderLineStyle = nil;