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 に答える