Note that there are some explanatory texts on larger screens.

plurals
  1. POCorePlot - Set y-Axis range to include all data points
    text
    copied!<p>I have implemented a CorePlot graph in my iOS application, however I am unable to dynamically size the y-Axis based on the data points in the set. Some datasets range from 10-50, while others would range from 400-500. In both cases, I would like to have y-origin (0) visible.</p> <p>I have tried using the scaletofitplots method: </p> <pre><code>[graph.defaultPlotSpace scaleToFitPlots:[graph allPlots]]; </code></pre> <p>but this has no effect on the graphs, they still show the default Y-Axis range of 0 to 1.</p> <p>The only way that I can change the y-Axis is to do it manually via this:</p> <pre><code>graph.defaultPlotSpace.yRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat(0.0f)) length:CPTDecimalFromFloat(500.0f)]; </code></pre> <p>however this doesn't work well for graphs with smaller ranges (10-50), as you can imagine.</p> <p>Is there any method to retrieve the highest y-value from my dataset so that I can manually set the maximum y-Axis to that value? Or is there a better alternative?</p> <p><strong>EDIT :</strong> Here's the file I am using:</p> <pre><code>#import "TUTSimpleScatterPlot.h" @implementation TUTSimpleScatterPlot @synthesize hostingView = _hostingView; @synthesize graph = _graph; @synthesize graphData = _graphData; -(id)initWithHostingView:(CPTGraphHostingView *)hostingView andData:(NSMutableArray *)data { self = [super init]; if (self != nil) { self.hostingView = hostingView; self.graphData = data; self.graph = nil; } return self; } -(void)initialisePlot { if ((self.hostingView == nil) || (self.graphData == nil)) { NSLog(@"TUTSimpleScatterPlot: Cannot Initialise plot with hosting view and data"); return; } if (self.graph != nil) { NSLog(@"TUTSimpleScatterPlot: Graph Object already exists."); } NSDate *refDate = [NSDate date]; NSTimeInterval oneDay = 24 * 60 * 60; CGRect frame = [self.hostingView bounds]; self.graph = [[CPTXYGraph alloc] initWithFrame:frame]; CPTXYPlotSpace *plotSpace = (CPTXYPlotSpace *)self.graph.defaultPlotSpace; plotSpace.allowsUserInteraction = YES; plotSpace.delegate = self; self.graph.plotAreaFrame.paddingBottom = 20.0f; self.graph.plotAreaFrame.paddingLeft = 35.0f; self.hostingView.hostedGraph = self.graph; CPTMutableLineStyle *lineStyle = [CPTMutableLineStyle lineStyle]; lineStyle.lineColor = [CPTColor whiteColor]; lineStyle.lineWidth = 2.0f; CPTMutableLineStyle *lineStyleThin = [CPTMutableLineStyle lineStyle]; lineStyleThin.lineColor = [CPTColor whiteColor]; lineStyleThin.lineWidth = 1.0f; CPTMutableTextStyle *textStyle = [CPTMutableTextStyle textStyle]; textStyle.fontName = @"HelveticaNeue-Medium"; textStyle.fontSize = 10; textStyle.color = [CPTColor whiteColor]; CPTMutableLineStyle *plotSymbolLineStyle = [CPTMutableLineStyle lineStyle]; plotSymbolLineStyle.lineColor = [CPTColor whiteColor]; plotSymbolLineStyle.lineWidth = 1.0f; CPTPlotSymbol *plotSymbol = [CPTPlotSymbol ellipsePlotSymbol]; plotSymbol.lineStyle = plotSymbolLineStyle; plotSymbol.fill = [CPTFill fillWithColor:[CPTColor colorWithComponentRed:0.4 green:0.6 blue:0.8 alpha:1.0]]; plotSymbol.size = CGSizeMake(8.0, 8.0); CPTScatterPlot *plot = [[CPTScatterPlot alloc] init]; plot.dataSource = self; plot.identifier = @"mainPlot"; [plotSpace scaleToFitPlots:[graph allPlots]]; CPTMutablePlotRange *yRange = [plotSpace.yRange mutableCopy]; [yRange expandRangeByFactor:CPTDecimalFromDouble(615)]; plotSpace.yRange = yRange; plotSpace.xRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat(oneDay - (oneDay * 6.3f)) length:CPTDecimalFromFloat(oneDay * 6.6f)]; plotSpace.allowsUserInteraction = YES; CPTPlotRange *globalYRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromDouble(0.0f) length:CPTDecimalFromDouble(615.0f)]; plotSpace.globalYRange = globalYRange; // Modify the graph's axis with a label, line style, etc CPTXYAxisSet *axisSet = (CPTXYAxisSet *)self.graph.axisSet; axisSet.xAxis.axisConstraints = [CPTConstraints constraintWithLowerOffset:0.0]; axisSet.xAxis.axisLineStyle = lineStyle; axisSet.xAxis.majorTickLineStyle = lineStyle; axisSet.xAxis.labelTextStyle = textStyle; axisSet.xAxis.labelOffset = 1.0f; axisSet.xAxis.majorIntervalLength = CPTDecimalFromFloat(oneDay*1); axisSet.xAxis.orthogonalCoordinateDecimal = CPTDecimalFromString(@"0.0"); axisSet.xAxis.minorTicksPerInterval = 0; axisSet.xAxis.majorTickLength = 0.0f; axisSet.xAxis.majorGridLineStyle = majorGridLineStyle; NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; [dateFormatter setDateFormat:@"dd MMM"]; CPTTimeFormatter *timeFormatter = [[CPTTimeFormatter alloc] initWithDateFormatter:dateFormatter]; timeFormatter.referenceDate = refDate; axisSet.xAxis.labelFormatter = timeFormatter; axisSet.yAxis.axisLineStyle = lineStyle; axisSet.yAxis.majorTickLineStyle = lineStyle; axisSet.yAxis.minorTickLineStyle = lineStyleThin; axisSet.yAxis.labelTextStyle = textStyle; axisSet.yAxis.labelOffset = 3.0f; axisSet.yAxis.majorIntervalLength = CPTDecimalFromString(@"50.0"); axisSet.yAxis.minorTicksPerInterval = 1; axisSet.yAxis.minorTickLength = 3.0; axisSet.yAxis.majorTickLength = 5.0; axisSet.yAxis.orthogonalCoordinateDecimal = CPTDecimalFromFloat(0); axisSet.yAxis.majorGridLineStyle = majorGridLineStyle; axisSet.yAxis.axisConstraints = [CPTConstraints constraintWithLowerOffset:0.0]; CPTMutableLineStyle *theLineStyle = [CPTMutableLineStyle lineStyle]; theLineStyle.lineColor = [CPTColor colorWithComponentRed:0.3 green:0.6 blue:0.9 alpha:1.0]; theLineStyle.lineWidth = 2.0f; plot.dataLineStyle = theLineStyle; plot.plotSymbol = plotSymbol; [self.graph addPlot:plot]; } </code></pre>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload