我差不多已经完成了我已经工作了几天的核心情节图。 有些东西我仍然无法做到(我找不到相关的文档),是将x轴标签更改为我需要的。 今天,我有一个x轴,每5个值显示整数标签:“5 10 15 ......”,我需要有与过去24小时相对应的标签。例如,如果它是15:00,我需要标签,如:“15 16 17 ... 23 0 1 2 .. 15”我正在考虑使用NSArray,并将其传递给plotSpace.xRange,但我不知道这是否是做到这一点的好方法。 这是我的代码:
CPXYPlotSpace *plotSpace = (CPXYPlotSpace *)graph.defaultPlotSpace;
plotSpace.xRange = [CPPlotRange plotRangeWithLocation:CPDecimalFromFloat(-15)
length:CPDecimalFromFloat(xmax + 15)];
plotSpace.yRange = [CPPlotRange plotRangeWithLocation:CPDecimalFromFloat(-1000)
length:CPDecimalFromFloat(4300)];
// Setup axis
CPXYAxisSet *axisSet = (CPXYAxisSet *)graph.axisSet;
CPLineStyle *lineStyle = [CPLineStyle lineStyle];
lineStyle.lineColor = [CPColor whiteColor];
lineStyle.lineWidth = 1.0f;
CPTextStyle *cyanStyle = [CPTextStyle textStyle];
cyanStyle.color = [CPColor cyanColor];
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
[formatter setMaximumFractionDigits:0];
axisSet.xAxis.majorIntervalLength = [[NSDecimalNumber decimalNumberWithString:@"5"] decimalValue];
axisSet.xAxis.minorTicksPerInterval = 0;
axisSet.xAxis.majorTickLineStyle = lineStyle;
axisSet.xAxis.minorTickLineStyle = lineStyle;
axisSet.xAxis.axisLineStyle = lineStyle;
axisSet.xAxis.majorTickLength = 5.0f;
axisSet.xAxis.labelOffset = 3.0f;
axisSet.xAxis.labelExclusionRanges = [NSArray arrayWithObjects:
[CPPlotRange plotRangeWithLocation:CPDecimalFromFloat(-15)
length:CPDecimalFromFloat(15)],
nil];
axisSet.xAxis.visibleRange = [CPPlotRange plotRangeWithLocation:CPDecimalFromInteger(0) length:CPDecimalFromInteger(xmax)];
axisSet.xAxis.labelFormatter = formatter;
axisSet.xAxis.title = @"Hour";
axisSet.xAxis.titleOffset = 25.0f;
axisSet.xAxis.titleLocation = CPDecimalFromFloat(25.0f);
axisSet.xAxis.titleTextStyle = cyanStyle;
任何帮助都会非常受欢迎:) 非常感谢, LUC
答案 0 :(得分:0)
我终于找到了使用自定义标签的解决方案:
NSArray *customTickLocations = [NSArray arrayWithObjects:[NSDecimalNumber numberWithInt:0],
[NSDecimalNumber numberWithInt:5],
[NSDecimalNumber numberWithInt:10],
[NSDecimalNumber numberWithInt:15],
[NSDecimalNumber numberWithInt:20],
[NSDecimalNumber numberWithInt:25],
[NSDecimalNumber numberWithInt:30],
[NSDecimalNumber numberWithInt:35],
[NSDecimalNumber numberWithInt:40],
nil];
NSArray *xAxisLabels = [NSArray arrayWithObjects:@"15",@"18",@"21",@"0",@"3",@"6",@"9",@"12",@"15",nil];
NSUInteger labelLocation = 0;
NSMutableArray *customLabels = [NSMutableArray arrayWithCapacity:[xAxisLabels count]];
for (NSNumber *tickLocation in customTickLocations) {
CPAxisLabel *newLabel = [[CPAxisLabel alloc] initWithText: [xAxisLabels objectAtIndex:labelLocation++] textStyle:axisSet.xAxis.labelTextStyle];
newLabel.tickLocation = [tickLocation decimalValue];
newLabel.offset = axisSet.xAxis.labelOffset + axisSet.xAxis.majorTickLength;
[customLabels addObject:newLabel];
[newLabel release];
}
axisSet.xAxis.axisLabels = [NSSet setWithArray:customLabels];
还有一些事要澄清,但这肯定是要走的路:) LUC