2011-12-26 18 views
1

Core-Plotライブラリを使ってiPhoneに棒グラフを描画しています。私はCPTTestApp-iPhoneを私の訓練に使用しています。私のプロジェクトでは、バーはサンプルプロジェクトのように見えます。しかし、私はバーを描くために値を与える必要はありません。次に、私の実際のプロジェクトでは、バーの値を動的に変更する必要があります。これどうやってするの?解決策を見つけるのを助けてください。前もって感謝します。サンプルデータソースコードの下にCore-Plot iphoneで動的にBarChartに値を変更するにはどうすればよいですか?

#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のバーの長さを増やすにはどうすればよいですか?ありがとう。

答えて

3

コアプロットプロットは、データソースが最初に表示されたときにそのデータソースからデータを要求します。

  1. を呼び出して、すべてのプロットをリロードすることができます。
  2. プロットでは-reloadDataを呼び出して、そのプロットだけすべてのデータをリロードしてください。
  3. プロットで-reloadDataInIndexRange:を呼び出して、データポイントの総数を変更せずに一連のデータインデックスをリロードします。
  4. -insertDataAtIndex:numberOfRecords:を呼び出して、指定されたインデックスに新しいデータを挿入します。より高い指数のデータは、部屋を作るために移動されます。新しいデータのみがデータソースから要求されます。

また、-deleteDataInIndexRange:メソッドを使用して何かをリロードすることなく、プロットからデータを削除することもできます。

名前が示すように、-numberOfRecordsForPlot:メソッドはプロットするデータポイントの数をプロットに指示します。 -numberForPlot:field:recordIndex:メソッドが呼び出され、実際のデータ値がロードされます。これは、フィールド(場所とチップ)とデータインデックスの組み合わせごとに呼び出されます。

関連する問題