ios - 了解 numberForPlot : and numberOfRecordsForPlot: Core Plot

标签 ios objective-c graph core-plot

我正在实现条形图,但在理解 numberForPlot:field:recordIndex:numberOfRecordsForPlot 两种方法时遇到问题

我现在有

-(NSUInteger)numberOfRecordsForPlot:(CPTPlot *)plot
{
    return 4;
}

-(NSNumber *)numberForPlot:(CPTPlot *)plot field:(NSUInteger)fieldEnum recordIndex:(NSUInteger)idx {
    switch (idx) {
        case 0:
            return @1;
            break;
        case 1:
            return @2;
            break;
        case 2:
            return @3;
            break;
        case 3:
            return @4;
            break;
        default:
            return @0;
            break;
    }
}

这会按预期生成图表。当我将 @4 更改为 @5 时,它会显示最后一个栏,旁边有一个空白栏。如果我根据 numberOfRecordsForPlot 绘制 4 个条目中的每一个的 x 和 y 位置,这是有道理的,但是当我在 numberForPlot 中记录信息时,它只有 0 & 1 为 fieldEnum。

我看过 doco 和示例,但对我来说并没有更清楚。有人可以解释一下吗?

最佳答案

主要问题是该委托(delegate)方法的 fieldEnum 没有按您的想法行事。它将具有 CPTBarPlotFieldBarLocation(“x”轴位置)或 CPTBarPlotFieldBarTip(条形高度)的值,因此这些应该是 switch 语句中使用的情况。 idx 指的是特定的柱。

在这里,我将条形的高度放在名为 plotData 的数据源对象的属性中。

self.plotData = @[@(1), @(2), @(3), @(4)];

然后你可以像这样实现委托(delegate)方法,

-(NSNumber*) numberForPlot:(CPTPlot *)plot field:(NSUInteger)fieldEnum recordIndex:(NSUInteger)idx {

    switch ( fieldEnum ) {
        case CPTBarPlotFieldBarLocation:
            return @(idx);
            break;

        case CPTBarPlotFieldBarTip:
            return [plotData objectAtIndex:idx];
            break;

        default:
            break;
    }

    return nil;
}

关于ios - 了解 numberForPlot : and numberOfRecordsForPlot: Core Plot,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22169195/

相关文章:

javascript - 莫里斯线图设置数据方法无法正常工作

ios - CreateNewUser() firebase 方法在用户 uid 的闭包中返回 nil

用于从嵌套的 Python 对象(字典)创建 TreeMap 的 Python 库

ios - mach_vm_allocate 和 vm_allocate 有什么区别?

objective-c - 快速判断 NSArray 包含哪些对象的方法

ios - 一起使用 Firebase 和 Google 分析?

ios - 以编程方式调整大小/对齐加载 View

c++ - 通过允许用户选择顶点数使用 Boost 库生成图形

ios - 从 Swift 函数中的异步调用返回数据

ios - 多点连接