如何使用巨大的y轴绘制核心图条形图?

时间:2012-08-14 13:54:26

标签: iphone ios core-plot

我正在使用CorePlot创建一个小型iPhone应用程序。该图由10个条组成。不幸的是,y值可能在0到100万之间不同,因此我使用相当大的yRange创建我的plotspace

plotSpace.yRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromDouble(yAxisStart)
                                                length:CPTDecimalFromDouble(yAxisLength)];

我遇到的是我的应用程序在加载图表时非常慢,我可以将此问题查明为yAxisLength的相当大的值。我已经在y轴上删除了刻度标记的创建,但性能仍然非常糟糕。任何人都可以给我一个如何提高性能的提示吗?

3 个答案:

答案 0 :(得分:3)

确保更新标签参数,即使您不需要任何标签或标记。默认标签策略创建刻度线并将一个单元标记为一个单位。这就是为什么大轴范围会使您的应用程序减速太多的原因。它还为每个标签创建单独的Core Animation层。创建100万个标签需要很长时间并占用大量内存。

如果您不需要任何刻度或标签,请将标签政策设置为CPTAxisLabelingPolicyNone。否则,对各种标签属性进行必要的调整(使用哪些属性取决于您选择的策略),以便在轴范围内有合理的刻度数。

答案 1 :(得分:0)

我没有使用过CorePlot,但也许你可以在尝试绘制之前扩展数据。

如果y比例范围高达一百万,则将y-max和所有y值除以100,000。然后在y轴标签上添加类似“(x100,000)”的内容。

答案 2 :(得分:0)

 y.labelingPolicy        = CPTAxisLabelingPolicyAutomatic;
    y.majorGridLineStyle    = nil;
    y.minorGridLineStyle    = nil;
    y.axisConstraints       = [CPTConstraints constraintWithLowerOffset:0.0];
    y.majorIntervalLength = CPTDecimalFromDouble(maxRange/2.0);

为我工作。