Note that there are some explanatory texts on larger screens.

plurals
  1. POdynamic data in coreplot iOS on x-axis and y-axis
    primarykey
    data
    text
    <p>how to have dynamic data in x-axis/y-axis in coreplot iOS :Currently using the demo code here:Below every column I need year on x-axis which itself is dynamic and y axis revenue amount .How do I do that dynamically?</p> <pre><code> // // CPDStockPriceStore.m // CorePlotDemo // // NB: Price data obtained from Yahoo! Finance: // http://finance.yahoo.com/q/hp?s=AAPL // http://finance.yahoo.com/q/hp?s=GOOG // http://finance.yahoo.com/q/hp?s=MSFT // // Created by Steve Baranski on 5/4/12. // Copyright (c) 2012 komorka technology, llc. All rights reserved. // #import "CPDStockPriceStore.h" @interface CPDStockPriceStore () @end @implementation CPDStockPriceStore #pragma mark - Class methods + (CPDStockPriceStore *)sharedInstance { static CPDStockPriceStore *sharedInstance; static dispatch_once_t once; dispatch_once(&amp;once, ^{ sharedInstance = [[self alloc] init]; }); return sharedInstance; } #pragma mark - API methods - (NSArray *)tickerSymbols { static NSArray *symbols = nil; if (!symbols) { symbols = [NSArray arrayWithObjects: @"AAPL", @"GOOG", @"MSFT", nil]; } return symbols; } - (NSArray *)dailyPortfolioPrices { static NSArray *prices = nil; if (!prices) { prices = [NSArray arrayWithObjects: [NSDecimalNumber numberWithFloat:582.13], [NSDecimalNumber numberWithFloat:604.43], [NSDecimalNumber numberWithFloat:32.01], nil]; } return prices; } - (NSArray *)datesInWeek { static NSArray *dates = nil; if (!dates) { dates = [NSArray arrayWithObjects: @"4/23", @"4/24", @"4/25", @"4/26", @"4/27", nil]; } return dates; } - (NSArray *)weeklyPrices:(NSString *)tickerSymbol { if ([CPDTickerSymbolAAPL isEqualToString:[tickerSymbol uppercaseString]] == YES) { return [self weeklyAaplPrices]; } else if ([CPDTickerSymbolGOOG isEqualToString:[tickerSymbol uppercaseString]] == YES) { return [self weeklyGoogPrices]; } else if ([CPDTickerSymbolMSFT isEqualToString:[tickerSymbol uppercaseString]] == YES) { return [self weeklyMsftPrices]; } return [NSArray array]; } - (NSArray *)datesInMonth { static NSArray *dates = nil; if (!dates) { dates = [NSArray arrayWithObjects: @"2", @"3", @"4", @"5", @"9", @"10", @"11", @"12", @"13", @"16", @"17", @"18", @"19", @"20", @"23", @"24", @"25", @"26", @"27", @"30", nil]; } return dates; } - (NSArray *)monthlyPrices:(NSString *)tickerSymbol { if ([CPDTickerSymbolAAPL isEqualToString:[tickerSymbol uppercaseString]] == YES) { return [self monthlyAaplPrices]; } else if ([CPDTickerSymbolGOOG isEqualToString:[tickerSymbol uppercaseString]] == YES) { return [self monthlyGoogPrices]; } else if ([CPDTickerSymbolMSFT isEqualToString:[tickerSymbol uppercaseString]] == YES) { return [self monthlyMsftPrices]; } return [NSArray array]; } #pragma mark - Private behavior - (NSArray *)weeklyAaplPrices { static NSArray *prices = nil; if (!prices) { prices = [NSArray arrayWithObjects: [NSDecimalNumber numberWithFloat:571.70], [NSDecimalNumber numberWithFloat:560.28], [NSDecimalNumber numberWithFloat:610.00], [NSDecimalNumber numberWithFloat:607.70], [NSDecimalNumber numberWithFloat:603.00], nil]; } return prices; } - (NSArray *)weeklyGoogPrices { static NSArray *prices = nil; if (!prices) { prices = [NSArray arrayWithObjects: [NSDecimalNumber numberWithFloat:597.60], [NSDecimalNumber numberWithFloat:601.27], [NSDecimalNumber numberWithFloat:609.72], [NSDecimalNumber numberWithFloat:615.47], [NSDecimalNumber numberWithFloat:614.98], nil]; } return prices; } - (NSArray *)weeklyMsftPrices { static NSArray *prices = nil; if (!prices) { prices = [NSArray arrayWithObjects: [NSDecimalNumber numberWithFloat:32.12], [NSDecimalNumber numberWithFloat:31.92], [NSDecimalNumber numberWithFloat:32.20], [NSDecimalNumber numberWithFloat:32.11], [NSDecimalNumber numberWithFloat:31.98], nil]; } return prices; } - (NSArray *)monthlyAaplPrices { static NSArray *prices = nil; if (!prices) { prices = [NSArray arrayWithObjects: [NSDecimalNumber numberWithFloat:618.63], [NSDecimalNumber numberWithFloat:629.32], [NSDecimalNumber numberWithFloat:624.31], [NSDecimalNumber numberWithFloat:633.68], [NSDecimalNumber numberWithFloat:636.23], [NSDecimalNumber numberWithFloat:628.44], [NSDecimalNumber numberWithFloat:626.20], [NSDecimalNumber numberWithFloat:622.77], [NSDecimalNumber numberWithFloat:605.23], [NSDecimalNumber numberWithFloat:580.13], [NSDecimalNumber numberWithFloat:609.70], [NSDecimalNumber numberWithFloat:608.34], [NSDecimalNumber numberWithFloat:587.44], [NSDecimalNumber numberWithFloat:572.98], [NSDecimalNumber numberWithFloat:571.70], [NSDecimalNumber numberWithFloat:560.28], [NSDecimalNumber numberWithFloat:610.00], [NSDecimalNumber numberWithFloat:607.70], [NSDecimalNumber numberWithFloat:603.00], [NSDecimalNumber numberWithFloat:583.98], nil]; } return prices; } - (NSArray *)monthlyGoogPrices { static NSArray *prices = nil; if (!prices) { prices = [NSArray arrayWithObjects: [NSDecimalNumber numberWithFloat:646.92], [NSDecimalNumber numberWithFloat:642.62], [NSDecimalNumber numberWithFloat:635.15], [NSDecimalNumber numberWithFloat:632.32], [NSDecimalNumber numberWithFloat:630.84], [NSDecimalNumber numberWithFloat:626.86], [NSDecimalNumber numberWithFloat:635.96], [NSDecimalNumber numberWithFloat:651.01], [NSDecimalNumber numberWithFloat:624.60], [NSDecimalNumber numberWithFloat:606.07], [NSDecimalNumber numberWithFloat:609.57], [NSDecimalNumber numberWithFloat:607.45], [NSDecimalNumber numberWithFloat:599.30], [NSDecimalNumber numberWithFloat:596.06], [NSDecimalNumber numberWithFloat:597.60], [NSDecimalNumber numberWithFloat:601.27], [NSDecimalNumber numberWithFloat:609.72], [NSDecimalNumber numberWithFloat:615.47], [NSDecimalNumber numberWithFloat:614.98], [NSDecimalNumber numberWithFloat:604.85], nil]; } return prices; } - (NSArray *)monthlyMsftPrices { static NSArray *prices = nil; if (!prices) { prices = [NSArray arrayWithObjects: [NSDecimalNumber numberWithFloat:32.29], [NSDecimalNumber numberWithFloat:31.94], [NSDecimalNumber numberWithFloat:31.21], [NSDecimalNumber numberWithFloat:31.52], [NSDecimalNumber numberWithFloat:31.10], [NSDecimalNumber numberWithFloat:30.47], [NSDecimalNumber numberWithFloat:30.35], [NSDecimalNumber numberWithFloat:30.98], [NSDecimalNumber numberWithFloat:30.81], [NSDecimalNumber numberWithFloat:31.08], [NSDecimalNumber numberWithFloat:31.44], [NSDecimalNumber numberWithFloat:31.14], [NSDecimalNumber numberWithFloat:31.01], [NSDecimalNumber numberWithFloat:32.42], [NSDecimalNumber numberWithFloat:32.12], [NSDecimalNumber numberWithFloat:31.92], [NSDecimalNumber numberWithFloat:32.20], [NSDecimalNumber numberWithFloat:32.11], [NSDecimalNumber numberWithFloat:31.98], [NSDecimalNumber numberWithFloat:32.02], nil]; } return prices; } @end #import "CPDBarGraphViewController.h" @interface CPDBarGraphViewController () @property (nonatomic, strong) IBOutlet CPTGraphHostingView *hostView; @property (nonatomic, strong) CPTBarPlot *aaplPlot; @property (nonatomic, strong) CPTBarPlot *googPlot; @property (nonatomic, strong) CPTBarPlot *msftPlot; @property (nonatomic, strong) CPTPlotSpaceAnnotation *priceAnnotation; -(IBAction)aaplSwitched:(id)sender; -(IBAction)googSwitched:(id)sender; -(IBAction)msftSwitched:(id)sender; -(void)initPlot; -(void)configureGraph; -(void)configurePlots; -(void)configureAxes; -(void)hideAnnotation:(CPTGraph *)graph; @end @implementation CPDBarGraphViewController CGFloat const CPDBarWidth = 0.25f; CGFloat const CPDBarInitialX = 0.25f; @synthesize hostView = hostView_; @synthesize aaplPlot = aaplPlot_; @synthesize googPlot = googPlot_; @synthesize msftPlot = msftPlot_; @synthesize priceAnnotation = priceAnnotation_; #pragma mark - Rotation -(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { return (interfaceOrientation == UIInterfaceOrientationLandscapeLeft); } #pragma mark - UIViewController lifecycle methods -(void)viewDidLoad { [super viewDidLoad]; [self initPlot]; } #pragma mark - Chart behavior -(void)initPlot { self.hostView.allowPinchScaling = NO; [self configureGraph]; [self configurePlots]; [self configureAxes]; } -(void)configureGraph { // 1 - Create the graph CPTGraph *graph = [[CPTXYGraph alloc] initWithFrame:self.hostView.bounds]; graph.plotAreaFrame.masksToBorder = NO; self.hostView.hostedGraph = graph; // 2 - Configure the graph [graph applyTheme:[CPTTheme themeNamed:kCPTPlainBlackTheme]]; graph.paddingBottom = 30.0f; graph.paddingLeft = 30.0f; graph.paddingTop = -1.0f; graph.paddingRight = -5.0f; // 3 - Set up styles CPTMutableTextStyle *titleStyle = [CPTMutableTextStyle textStyle]; titleStyle.color = [CPTColor whiteColor]; titleStyle.fontName = @"Helvetica-Bold"; titleStyle.fontSize = 16.0f; // 4 - Set up title NSString *title = @"Portfolio Prices: April 23 - 27, 2012"; graph.title = title; graph.titleTextStyle = titleStyle; graph.titlePlotAreaFrameAnchor = CPTRectAnchorTop; graph.titleDisplacement = CGPointMake(0.0f, -16.0f); // 5 - Set up plot space CGFloat xMin = 0.0f; CGFloat xMax = [[[CPDStockPriceStore sharedInstance] datesInWeek] count]; CGFloat yMin = 0.0f; CGFloat yMax = 800.0f; // should determine dynamically based on max price CPTXYPlotSpace *plotSpace = (CPTXYPlotSpace *) graph.defaultPlotSpace; plotSpace.xRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat(xMin) length:CPTDecimalFromFloat(xMax)]; plotSpace.yRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat(yMin) length:CPTDecimalFromFloat(yMax)]; } -(void)configurePlots { // 1 - Set up the three plots self.aaplPlot = [CPTBarPlot tubularBarPlotWithColor:[CPTColor redColor] horizontalBars:NO]; self.aaplPlot.identifier = CPDTickerSymbolAAPL; self.googPlot = [CPTBarPlot tubularBarPlotWithColor:[CPTColor greenColor] horizontalBars:NO]; self.googPlot.identifier = CPDTickerSymbolGOOG; self.msftPlot = [CPTBarPlot tubularBarPlotWithColor:[CPTColor blueColor] horizontalBars:NO]; self.msftPlot.identifier = CPDTickerSymbolMSFT; // 2 - Set up line style CPTMutableLineStyle *barLineStyle = [[CPTMutableLineStyle alloc] init]; barLineStyle.lineColor = [CPTColor lightGrayColor]; barLineStyle.lineWidth = 0.5; // 3 - Add plots to graph CPTGraph *graph = self.hostView.hostedGraph; CGFloat barX = CPDBarInitialX; NSArray *plots = [NSArray arrayWithObjects:self.aaplPlot, self.googPlot, self.msftPlot, nil]; for (CPTBarPlot *plot in plots) { plot.dataSource = self; plot.delegate = self; plot.barWidth = CPTDecimalFromDouble(CPDBarWidth); plot.barOffset = CPTDecimalFromDouble(barX); plot.lineStyle = barLineStyle; [graph addPlot:plot toPlotSpace:graph.defaultPlotSpace]; barX += CPDBarWidth; } } -(void)configureAxes { // 1 - Configure styles CPTMutableTextStyle *axisTitleStyle = [CPTMutableTextStyle textStyle]; axisTitleStyle.color = [CPTColor whiteColor]; axisTitleStyle.fontName = @"Helvetica-Bold"; axisTitleStyle.fontSize = 12.0f; CPTMutableLineStyle *axisLineStyle = [CPTMutableLineStyle lineStyle]; axisLineStyle.lineWidth = 2.0f; axisLineStyle.lineColor = [[CPTColor whiteColor] colorWithAlphaComponent:1]; // 2 - Get the graph's axis set CPTXYAxisSet *axisSet = (CPTXYAxisSet *) self.hostView.hostedGraph.axisSet; // 3 - Configure the x-axis axisSet.xAxis.labelingPolicy = CPTAxisLabelingPolicyNone; axisSet.xAxis.title = @"Days of Week (Mon - Fri)"; axisSet.xAxis.titleTextStyle = axisTitleStyle; axisSet.xAxis.titleOffset = 10.0f; axisSet.xAxis.axisLineStyle = axisLineStyle; // 4 - Configure the y-axis axisSet.yAxis.labelingPolicy = CPTAxisLabelingPolicyNone; axisSet.yAxis.title = @"Price"; axisSet.yAxis.titleTextStyle = axisTitleStyle; axisSet.yAxis.titleOffset = 5.0f; axisSet.yAxis.axisLineStyle = axisLineStyle; } -(void)hideAnnotation:(CPTGraph *)graph { if ((graph.plotAreaFrame.plotArea) &amp;&amp; (self.priceAnnotation)) { [graph.plotAreaFrame.plotArea removeAnnotation:self.priceAnnotation]; self.priceAnnotation = nil; } } #pragma mark - CPTPlotDataSource methods -(NSUInteger)numberOfRecordsForPlot:(CPTPlot *)plot { return [[[CPDStockPriceStore sharedInstance] datesInWeek] count]; } -(NSNumber *)numberForPlot:(CPTPlot *)plot field:(NSUInteger)fieldEnum recordIndex:(NSUInteger)index { if ((fieldEnum == CPTBarPlotFieldBarTip) &amp;&amp; (index &lt; [[[CPDStockPriceStore sharedInstance] datesInWeek] count])) { if ([plot.identifier isEqual:CPDTickerSymbolAAPL]) { return [[[CPDStockPriceStore sharedInstance] weeklyPrices:CPDTickerSymbolAAPL] objectAtIndex:index]; } } return [NSDecimalNumber numberWithUnsignedInteger:index]; } #pragma mark - CPTBarPlotDelegate methods -(void)barPlot:(CPTBarPlot *)plot barWasSelectedAtRecordIndex:(NSUInteger)index { NSLog(@"barWasSelectedAtRecordIndex %d", index); } @end </code></pre>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

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