我有一个使用 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;
}
相关部分是 case CPTBarPlotFieldBarLocation ,它返回我认为正确的 n 个值数组...
NUMS = (0, 86400, 172800, 259200, 345600, 432000, 518400)