如何在Core-Plot iphone中动态地将值更改为BarChart?

时间:2011-12-26 06:37:56

标签: iphone dynamic core-plot bar-chart

我正在使用Core-Plot库在iPhone中绘制条形图。我正在使用CPTTestApp-iPhone进行培训。在我的项目中,条形似乎非常好,从示例项目看起来像。但是,我不需要给出值来绘制条形图。然后,在我的实际项目中,我需要动态更改条形值。我怎样才能做到这一点?请帮我找出解决方案。提前致谢。在示例数据源代码下面,

#pragma mark -
#pragma mark Plot Data Source Methods

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

-(NSNumber *)numberForPlot:(CPTPlot *)plot field:(NSUInteger)fieldEnum recordIndex:(NSUInteger)index 
{
    NSDecimalNumber *num = nil;
    if ( [plot isKindOfClass:[CPTBarPlot class]] ) 
    {
        switch ( fieldEnum ) 
        {
            case CPTBarPlotFieldBarLocation:
                num = (NSDecimalNumber *)[NSDecimalNumber numberWithUnsignedInteger:index];
                break;
            case CPTBarPlotFieldBarTip:
                num = (NSDecimalNumber *)[NSDecimalNumber numberWithUnsignedInteger:(index+1)*(index+1)];
                if ( [plot.identifier isEqual:@"Bar Plot 2"] ) 
                    num = [num decimalNumberBySubtracting:[NSDecimalNumber decimalNumberWithString:@"10"]];//10
                break;
        }
    }

    return num;
}

-(CPTFill *) barFillForBarPlot:(CPTBarPlot *)barPlot recordIndex:(NSNumber *)index; 
{
    return nil;
}

如何在coreplot iPhone中增加条形长度?感谢。

1 个答案:

答案 0 :(得分:3)

Core Plot图将在首次显示时从数据源请求其数据。您可以通过多种方式强制它加载新数据:

  1. 在图表上调用-reloadData以重新加载所有图表。
  2. 在地块上调用-reloadData以重新加载该地块的所有数据。
  3. 在绘图上调用-reloadDataInIndexRange:以重新加载一系列数据索引而不更改数据点的总数。
  4. 调用-insertDataAtIndex:numberOfRecords:以在给定索引处插入新数据。任何较高指数的数据都将被移动以腾出空间。只会从数据源请求新数据。
  5. 您还可以使用-deleteDataInIndexRange:方法从绘图中删除数据,而无需重新加载任何内容。

    顾名思义,-numberOfRecordsForPlot:方法告诉图表将绘制多少数据点。将调用-numberForPlot:field:recordIndex:方法来加载实际数据值。它会针对字段(位置和提示)和数据索引的每个组合进行调用。