Iphone using an array to determine in the range of the main graph

I almost finished the main schedule, which I’ve been working on for a couple of days. I can’t do anything yet (and I can’t find the documentation on this), it is to change the labels of the x axis to what I need. Today I have an x ​​axis with a whole label displayed every 5 values: "5 10 15 ...", I need to have labels corresponding to the last 24 hours. For example, if it’s 15:00, I’ll need labels like: “15 16 17 ... 23 0 1 2 .. 15” I was thinking about using NSArray for this and passing it to plotSpace.xRange, but I don’t know if this is a good way to do it. Here is my code:

            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;

Any help would be really appreciated :) Thanks a lot, Luke

0
source share
1

, , :

            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];

- -, , , , :)

0

Source: https://habr.com/ru/post/1789512/


All Articles