iOS
Diagram (Coreplot)
Sök…
Att göra grafer med CorePlot
Core Plot tillhandahåller en podspec, så att du kan använda cocoapods som din bibliotekshanterare, vilket skulle göra installationen och uppdateringen mycket enklare
Installera cocoapods på ditt system
Lägg till en textfil i projektkatalogen som heter Podfile genom att skriva pod init
i projektkatalogen
Lägg till linjepoden 'CorePlot', '~> 1.6' i Podfilen
På terminalen, cd till din projektkatalog och kör podinstallation
Cocoapods genererar en xcworkspace-fil, som du bör använda för att starta ditt projekt (.xcodeproj-filen kommer inte att innehålla pod-biblioteken)
Öppna .xcworkspace genererat av CocoaPods
I ViewController.h-filen
#import <CorePlot/ios/CorePlot.h>
//#import "CorePlot-CocoaTouch.h" or the above import statement
@interface ViewController : UIViewController<CPTPlotDataSource>
I ViewController.m-filen
-(void)loadView
{
[super loadView];
// We need a hostview, you can create one in IB (and create an outlet) or just do this:
CPTGraphHostingView* hostView = [[CPTGraphHostingView alloc] initWithFrame:CGRectMake(10, 40, 300, 400)];
hostView.backgroundColor=[UIColor whiteColor];
self.view.backgroundColor=[UIColor blackColor];
[self.view addSubview: hostView];
// Create a CPTGraph object and add to hostView
CPTGraph* graph = [[CPTXYGraph alloc] initWithFrame:CGRectMake(10, 40, 300, 400)];
hostView.hostedGraph = graph;
// Get the (default) plotspace from the graph so we can set its x/y ranges
CPTXYPlotSpace *plotSpace = (CPTXYPlotSpace *) graph.defaultPlotSpace;
// Note that these CPTPlotRange are defined by START and LENGTH (not START and END) !!
[plotSpace setYRange: [CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat( 0 ) length:CPTDecimalFromFloat( 20 )]];
[plotSpace setXRange: [CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat( -4 ) length:CPTDecimalFromFloat( 8 )]];
// Create the plot (we do not define actual x/y values yet, these will be supplied by the datasource...)
CPTScatterPlot* plot = [[CPTScatterPlot alloc] initWithFrame:CGRectZero];
// Let's keep it simple and let this class act as datasource (therefore we implemtn <CPTPlotDataSource>)
plot.dataSource = self;
// Finally, add the created plot to the default plot space of the CPTGraph object we created before
[graph addPlot:plot toPlotSpace:graph.defaultPlotSpace];
}
// This method is here because this class also functions as datasource for our graph
// Therefore this class implements the CPTPlotDataSource protocol
-(NSUInteger)numberOfRecordsForPlot:(CPTPlot *)plotnumberOfRecords
{
return 9; // Our sample graph contains 9 'points'
}
// This method is here because this class also functions as datasource for our graph
// Therefore this class implements the CPTPlotDataSource protocol
-(NSNumber *)numberForPlot:(CPTPlot *)plot field:(NSUInteger)fieldEnum recordIndex:(NSUInteger)index
{
// We need to provide an X or Y (this method will be called for each) value for every index
int x = index - 4;
// This method is actually called twice per point in the plot, one for the X and one for the Y value
if(fieldEnum == CPTScatterPlotFieldX)
{
// Return x value, which will, depending on index, be between -4 to 4
return [NSNumber numberWithInt: x];
} else
{
// Return y value, for this example we'll be plotting y = x * x
return [NSNumber numberWithInt: x * x];
}
}
Den genererade utgången är som anges nedan:
Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow