繁体   English   中英

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

[英]How to draw a coreplot barchart with a huge y-Axis?

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

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

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

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

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

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

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

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

为我工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM