[英]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.