在Core-Plot中对y轴标签进行四舍五入

4

我有一个图形区域,可以选择绘制不同属性。每个属性都定义了自己的y轴范围。下面的图片显示y轴标签,这些标签被舍入到最接近的单位(看起来不干净)。

Plots

如何做到按照数据图形舍入到最近的百万分之一、千分之一或百分之一来设置y轴标签?

我还想设置y轴的上下限为舍入后的数字,以便稍后设置均匀增量,从而获得更好的标签。如何获取这些经过舍入的极限值?

我现在为设置这些极限值所做的事情如下:

    //Look up the absolute minimum and absolute maximum values
    NSNumber * min = [allArraysDrawn valueForKeyPath:@"@min.intValue"];
    NSNumber * max = [allArraysDrawn valueForKeyPath:@"@max.intValue"];
    //Define the limits of the plot area with a cushion both above the max value and below the min value
    float yAxisMin = [min floatValue] - (([max floatValue] - [min floatValue]) * 0.05);
    float yAxisMax = [max floatValue] + (([max floatValue] - [min floatValue]) * 0.05);

有任何想法吗?谢谢!

1个回答

2

尝试使用CPTAxisLabelingPolicyAutomatic轴标签策略。它将计算出“好看”的间隔,以便用于刻度线和网格线。如果不满意,请使用默认的CPTAxisLabelingPolicyFixedInterval标签策略,并选择所需幂次方的majorIntervalLength


是否有一种标记策略可以在数字太大时缩短它们?例如:20k 表示 20,0003M 表示 3,000,000 - Juan Andres
您可以设置 labelFormatter 来实现此功能。NSNumberFormatter 有很多选项。 - Eric Skroch
@EricSkroch,我没有使用core-plot,但你能解释一下或者展示一下它背后的逻辑吗?这会非常有帮助。 - kidsid49
Core Plot的“好看”的数字代码在这里 - Eric Skroch
@EricSkroch 如果我传递最大值,它会给出漂亮的固定间隔数吗? - kidsid49
显示剩余5条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接