Не бери в голову ...!Я нашел решение для qn.Я заставил свою ось х использовать собственные метки (как это было предложено Рахулом Вьясом).Это решено одной из проблем, с которыми я столкнулся.И для другой проблемы, я попытался получить строку из NSDate, используя NSDateformatter и из строки.Я публикую код ниже.Надеюсь, это поможет кому-то.Код для создания пользовательских меток со временем по оси x, который уже есть в примере с гистограммой.
-(void)configureXAxisForGraph:(CPXYGraph*)graphForAxis
{
CPXYAxisSet *axisSet = (CPXYAxisSet *)graph.axisSet;
CPXYAxis *x=axisSet.xAxis;
x.majorIntervalLength = [[NSDecimalNumber decimalNumberWithString:@"1"] decimalValue];
CPPlotRange *xAxisRange=[CPPlotRange plotRangeWithLocation:CPDecimalFromString(@"0.0") length:CPDecimalFromString(@"24.0")];
x.minorTicksPerInterval = 4;
x.majorTickLineStyle = lineStyle;
x.minorTickLineStyle = lineStyle;
x.axisLineStyle = lineStyle;
x.minorTickLength = 5.0f;
x.majorTickLength = 7.0f;
x.visibleRange=xAxisRange;
x.orthogonalCoordinateDecimal=CPDecimalFromString(@"0");
x.title=@"Hours";
x.titleOffset=47.0f;
x.labelRotation=M_PI/4;
x.labelingPolicy=CPAxisLabelingPolicyNone;
NSArray *customTickLocations = [NSArray arrayWithObjects:[NSDecimalNumber numberWithInt:3], [NSDecimalNumber numberWithInt:6], [NSDecimalNumber numberWithInt:9], [NSDecimalNumber numberWithInt:12],
[NSDecimalNumber numberWithInt:15], [NSDecimalNumber numberWithInt:18], [NSDecimalNumber numberWithInt:21], [NSDecimalNumber numberWithInt:24],nil];
NSArray *xAxisLabels = [NSArray arrayWithObjects:@"3 AM", @"6 AM", @"9 AM", @"12PM", @"3 PM",@"6 PM",@"9 PM", @"12 AM", nil];
NSUInteger labelLocation = 0;
NSMutableArray *customLabels = [NSMutableArray arrayWithCapacity:[xAxisLabels count]];
for (NSNumber *tickLocation in customTickLocations)
{
CPAxisLabel *newLabel = [[CPAxisLabel alloc] initWithText: [xAxisLabels objectAtIndex:labelLocation++] textStyle:x.labelTextStyle];
newLabel.tickLocation = [tickLocation decimalValue];
newLabel.offset = x.labelOffset + x.majorTickLength;
newLabel.rotation = M_PI/4;
[customLabels addObject:newLabel];
[newLabel release];
}
x.axisLabels = [NSSet setWithArray:customLabels];
}
Вот код, который мне помог с построением значений против числа и времени (час).
self.dataToBePlotted = [NSMutableArray array];
NSUInteger i;
for ( i = 0; i < [dummyDataArray count]; i++ )
{
Chirp *retValue=[[Chirp alloc]init];
retValue=[dummyDataArray objectAtIndex:i];
NSDate *tempDate=retValue.startingAt;
NSString *dateFromString=[dateFormatter1 stringFromDate:tempDate];
NSLog(@"%@", dateFromString);
id x=dateFromString;
id y=[NSDecimalNumber numberWithFloat:[retValue.chipCount floatValue]];
[self.dataToBePlotted addObject:
[NSDictionary dictionaryWithObjectsAndKeys:
x, [NSNumber numberWithInt:CPScatterPlotFieldX],
y, [NSNumber numberWithInt:CPScatterPlotFieldY],
nil]];
}
self.plotData = self.dataToBePlotted;
-(NSUInteger)numberOfRecordsForPlot:(CPPlot *)plot
{
return [plotData count];
}
-(NSNumber *)numberForPlot:(CPPlot *)plot field:(NSUInteger)fieldEnum recordIndex:(NSUInteger)index
{
NSDecimalNumber *num = [[plotData objectAtIndex:index] objectForKey:[NSNumber numberWithInt:fieldEnum]];
return num;
}