ビューコントローラーに表示している2つのグラフがあります。y 軸は記録された時間値で、x はデータ、風の凪、突風、平均です。私の問題は、アレイ内のデータ収集が約 8 ~ 10 時間にわたって行われることです。そのため、最初の値が夜の 19:00 になり、最後の値が朝の 05:00 になることがあります。これを散布図に入れようとすると、データは順番ではなく、いたるところにあります。配列のインデックス番号を使用すると、美しくプロットされますが、データが常に時系列であるとは限りません。データのない場所で 1 時間が経過することがあります。y 軸を記録された時間値に変更すると、HH:mm:ss から 19.0 と 5.0 に変換され、前の例では、以下に示すようにプロットが間違っています。カスタム ラベルなどを y 軸に追加しましたが、線形にする方法が必要ですか??
編集:
データに前日と当日がある場合、以下のように実行される軸番号を除いて、x 軸が以下のようになることを望みますか??:
19,20,21,22,23,24,1,2,3,4,5,6
現在、まさにそれを行うための顧客ラベル ループがありますが、データはまだ循環していますか?
plotSpace.xRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat([xFirstEntry integerValue]) length:CPTDecimalFromFloat(10.5)];
plotSpace.yRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat(0) length:CPTDecimalFromFloat([yMaxValue integerValue]+12)];
plotSpace.globalXRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromDouble([xFirstEntry integerValue]) length:CPTDecimalFromDouble(10.5)];
plotSpace.globalYRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromDouble(0) length:CPTDecimalFromDouble([yMaxValue doubleValue]*1.23)];
CPTXYAxisSet *axisSet = (CPTXYAxisSet *)graph.axisSet;
CPTXYAxis *x = axisSet.xAxis;
x.majorIntervalLength = [[NSDecimalNumber decimalNumberWithString:@"1"] decimalValue];
x.axisConstraints = [CPTConstraints constraintWithLowerOffset:0];
x.labelingPolicy = CPTAxisLabelingPolicyNone;
xFirstEntry = [[[changedArray objectAtIndex:0]objectForKey:@"date"] substringFromIndex:11];
xFirstEntry = [xFirstEntry substringToIndex:[xFirstEntry length] - 6];
xLastEntry = [[[changedArray objectAtIndex:changedArray.count-1]objectForKey:@"date"] substringFromIndex:11];
xLastEntry = [xLastEntry substringToIndex:[xLastEntry length] - 6];
NSLog(@"%@ %@", xFirstEntry, xLastEntry);
NSMutableArray *xCustomTickLocations = [[NSMutableArray alloc]init];
NSMutableArray *xCustomAxisLabels = [[NSMutableArray alloc]init];
NSInteger newValue = [xFirstEntry integerValue];
if ([xFirstEntry integerValue] > [xLastEntry integerValue]) {
NSLog(@"gretaer than");
while (newValue <= 24) {
[xCustomTickLocations addObject:[NSDecimalNumber numberWithInt:newValue]];
[xCustomAxisLabels addObject:[NSString stringWithFormat:@"%d",newValue]];
newValue++;
}
newValue = 1;
[xCustomTickLocations addObject:[NSDecimalNumber numberWithInt:newValue]];
[xCustomAxisLabels addObject:[NSString stringWithFormat:@"%d",newValue]];
while (newValue <= [xLastEntry integerValue]+1) {
[xCustomTickLocations addObject:[NSDecimalNumber numberWithInt:newValue]];
[xCustomAxisLabels addObject:[NSString stringWithFormat:@"%d",newValue]];
newValue++;
}
}
else {
NSLog(@"less than");
while (newValue <= [xLastEntry integerValue]+1) {
[xCustomTickLocations addObject:[NSDecimalNumber numberWithInt:newValue]];
[xCustomAxisLabels addObject:[NSString stringWithFormat:@"%d",newValue]];
newValue++;
}
}
NSUInteger XlabelLocation = 0;
CPTMutableTextStyle *xLabelStyle = [CPTMutableTextStyle textStyle];
xLabelStyle.color = [[CPTColor whiteColor] colorWithAlphaComponent:1];
xLabelStyle.fontName = @"Helvetica-Bold";
xLabelStyle.fontSize = 9.0f;
NSMutableArray *XcustomLabels = [NSMutableArray arrayWithCapacity:[xCustomAxisLabels count]];
for (NSNumber *XtickLocation in xCustomTickLocations) {
CPTAxisLabel *newLabel = [[CPTAxisLabel alloc] initWithText: [xCustomAxisLabels objectAtIndex:XlabelLocation++] textStyle:xLabelStyle];
newLabel.tickLocation = [XtickLocation decimalValue];
newLabel.offset = 2;
newLabel.rotation=M_PI_2;
[XcustomLabels addObject:newLabel];
}
x.axisLabels = [NSSet setWithArray:XcustomLabels];