【问题标题】:iPhone CorePlot proper formatting of y-axisiPhone CorePlot y 轴的正确格式
【发布时间】:2011-11-07 20:34:21
【问题描述】:

我正在使用 CorePlot 绘制一组数据。我的 x 轴数据由日期组成,而我的 y 轴数据由浮点数组成(然后我将其转换为 NSNumber)。我从提要中获取数据,提要返回带有大量小数的数字,例如:0.46673718852844、4.59392222219、353.1293012045。 我正在使用以下代码来正确格式化 y 轴:

NSNumberFormatter *numberFormatter = [[[NSNumberFormatter alloc] init] autorelease];
[numberFormatter setNumberStyle:NSNumberFormatterDecimalStyle];
[numberFormatter setMaximumFractionDigits:3];
[numberFormatter setPositiveFormat:@"###0.000"];    
CPTXYAxis *y = axisSet.yAxis;
y.labelingPolicy = CPTAxisLabelingPolicyAutomatic;
y.minorTicksPerInterval = 1;
y.preferredNumberOfMajorTicks = 5;
y.labelFormatter = numberFormatter;

在大多数情况下,一切正常。但是,有时它会在沿轴的多个位置显示相同的值。见下图:

值显示正确,我只是想避免不必要的 (0.466) 标签。我什至尝试在numberForPlot 方法中将数字四舍五入为小数点后三位:

if(fieldEnum == CPTScatterPlotFieldY)
{ 
        float floatNum = r.value;
        floatNum *= 1000;
        int intValue = (int) floatNum;
        float decimal = floatNum - intValue;
        if (decimal > 0.5) {
            intValue++;
        }
        floatNum = intValue /1000.0;
        return [NSNumber numberWithFloat:floatNum];

}

但标签没有区别。

【问题讨论】:

    标签: iphone core-plot


    【解决方案1】:

    preferredNumberOfMajorTicks 属性告诉标签算法要使用多少个刻度线。如果您想要三个刻度,请将其设置为 3。您还可以增加数字格式化程序的最大小数位数以避免舍入问题。

    【讨论】:

    • 问题是这不是我的应用程序中唯一的图表,5 个刻度通常看起来最好。与数字相同的东西 - 通常三个就足够了,不需要显示 4 个数字。啊,我想我将不得不对图表进行一些手动设置。还是谢谢
    • 我的解决方案是根据轴范围动态更改刻度数。
    【解决方案2】:

    我相信,因为您已经说过您想要 5 个主要刻度,这就是您将得到的,无论 y 轴值有多接近。如果您感觉这些值过于接近,您可能需要调整您的 preferredNumberOfMajorTicks 属性。

    在我使用 Core Plot 的应用程序中,我关闭了自动轴标签,并将我自己的 x 和 y 轴标签放在一起。这有点多,但我喜欢自己做的灵活性。

    【讨论】:

    • @maggie 有点晚了,但应该是:CPTAxisLabelingPolicyNone
    【解决方案3】:

    我在这里所做的是在绘制图表时动态设置我的preferredNumberOfMajorTicks 属性。由于我的格式化程序显示 3 位小数,我使用以下代码根据 Y 轴范围更改刻度数,以便格式化程序在每个刻度上在轴上显示唯一值。刻度太多意味着小数位被截断,并且 Y 轴上有重复值。

                CPTXYAxis *y          = axisSet.yAxis;
                {
                    y.preferredNumberOfMajorTicks = round([newYRange.length floatValue]/0.001);
                }
    

    我希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多