Core-plot (CPTBarPlot) を使用したグラフがあり、X 軸に日を表示したいと思います。バーごとに異なる日を順番に表示します。次のように CPTTimeFormatter を設定しようとしました。x は x 軸です。
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init] ;
dateFormatter.dateStyle = kCFDateFormatterMediumStyle;
CPTTimeFormatter *timeFormatter = [[CPTTimeFormatter alloc] initWithDateFormatter:dateFormatter];
NSDate *refDate = [NSDate date];
timeFormatter.referenceDate = refDate;
x.labelFormatter = timeFormatter;
numbersForPlot の内部では、経過秒数を表す一連の数値を返しています。連続した日を取得したいので、0、86400、172800、259200、345600、432000、518400 などのようになります。
この場合の X 軸ラベルは、refDate から始まり、numbersForPlot の秒数だけ上がる日付の連続したリストであると予想しました。代わりに、x 軸のすべてのバーで同じ日付が何度も繰り返されるだけです。私が間違っていることと、それを修正する方法を誰かに説明してもらえますか? ありがとう。
編集: これは、データソース内での numbersForPlot 関数の外観です。
-(NSArray *)numbersForPlot:(CPTPlot *)plot field:(NSUInteger)fieldEnum recordIndexRange:(NSRange)indexRange
{
NSArray *nums = nil;
switch ( fieldEnum ) {
case CPTBarPlotFieldBarLocation:
nums = [NSMutableArray arrayWithCapacity:indexRange.length];
for ( NSUInteger i = indexRange.location; i < NSMaxRange(indexRange); i++ ) {
[(NSMutableArray *)nums addObject :[NSDecimalNumber numberWithUnsignedInteger:i*secondsPerDay]];
}
NSLog(@"NUMS = %@",nums);
break;
case CPTBarPlotFieldBarTip:
nums = [stepsPerDay objectsAtIndexes:[NSIndexSet indexSetWithIndexesInRange:indexRange]];
break;
default:
break;
}
return nums;
}
関連する部分は、正しいと思われる値の n 配列を返す CPTBarPlotFieldBarLocation のケースです...
数値 = (0、86400、172800、259200、345600、432000、518400)