0

我在使用 CorePlot 框架绘制数据时遇到问题。我已经集成了它,下面是我正在处理的项目中的代码示例:实时散点图。

如果我的数据源具有相同的值,则图表不会绘制。

这是绘制点的代码:

#pragma mark - CPTPlotDataSource methods
-(NSUInteger)numberOfRecordsForPlot:(CPTPlot *)plot {
    return [appDelegate.arrayLiveValues count];
}

-(NSNumber *)numberForPlot:(CPTPlot *)plot field:(NSUInteger)fieldEnum 
                                       recordIndex:(NSUInteger)index 
{
    NSInteger valueCount = [appDelegate.arrayLiveValues count];
    switch (fieldEnum) {
        case CPTScatterPlotFieldX:
            if (index < valueCount) {
                return [NSNumber numberWithUnsignedInteger:index];
            }
            break;

        case CPTScatterPlotFieldY:
            return [appDelegate.arrayLiveValues  objectAtIndex:index];
            break;
    }
    return [NSDecimalNumber zero];
}

如果appDelegate.arrayLiveValues数组包含重复值,则它不会绘图。如果它有不同的值,它会根据 中的值绘制图形datasource,即appDelegate.arrayLiveValues图形缩放级别正在设置。我想知道内部功能是什么

-(NSNumber *)numberForPlot:(CPTPlot *)plot field:(NSUInteger)fieldEnum recordIndex:(NSUInteger)index method;
4

1 回答 1

0

是的,我们必须根据我们的值设置最小最大界限。

    CGFloat xMin = 0.0f;
    CGFloat xMax = 40.0f;  //i need 40 plots 
    CGFloat yMin = 0.0f;
    CGFloat yMax = 300.0f;  // should determine dynamically based on max price
    plotSpace.xRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat(xMin) length:CPTDecimalFromFloat(xMax)];
    plotSpace.yRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat(yMin) length:CPTDecimalFromFloat(yMax)];
于 2012-06-19T08:25:53.687 回答