CorePlotでグラフ作成！storyboardでの扱いと極々短いサンプル

#はじめに

なるべく日本語のサイトで見つかりにくかったところについて、です。
組み込み方は、本家や他にもいろんな方が書いていますので割愛しました。

#公式サイト
https://code.google.com/p/core-plot/

#探したけどみつからなかったこと
##storyBoardで設定

1. UIViewを配置

2. Custom Classを UIView から CPTGraphHostingView に変更します
![スクリーンショット 2013-12-20 3.17.23.png](https://qiita-image-store.s3.amazonaws.com/0/12362/086b2425-f0e2-df14-ee02-8cc786cb11b1.png)

3.ViewControllerのheaderは次のような感じです

```objc
#import <UIKit/UIKit.h>
#import "CorePlot-CocoaTouch.h"

@interface YFViewController : UIViewController<CPTPlotDataSource>
@property(weak,nonatomic) IBOutlet CPTGraphHostingView * graphView;
@end
```
4.storyboardとつなぎます
![スクリーンショット 2013-12-20 4.02.35.png](https://qiita-image-store.s3.amazonaws.com/0/12362/1ee7a63b-15b7-2974-6233-e716b3fd348d.png)

##タッチイベントからパラメータを取得
![スクリーンショット 2013-12-21 5.16.41.png](https://qiita-image-store.s3.amazonaws.com/0/12362/75ac9df4-049a-ca6e-35ba-81f6b39b47dc.png)


###タッチポイントの位置をとる
YFViewController.h

```objc
#import <UIKit/UIKit.h>
#import "CorePlot-CocoaTouch.h"

@interface YFViewController : UIViewController<CPTPlotDataSource,CPTPlotSpaceDelegate>
@property(weak,nonatomic) IBOutlet CPTGraphHostingView * graphView;
@end
```
YFViewController.m

```objc
- (void)viewDidLoad
{
    [super viewDidLoad];
    CPTGraph *graph = [[CPTXYGraph alloc] initWithFrame:self.graphView.bounds];
    CPTXYPlotSpace *plotSpace = (CPTXYPlotSpace *) graph.defaultPlotSpace;
    plotSpace.delegate = self;

    //以降CPTScatterPlotのインスタンス作成など
}

#pragma mark -
#pragma mark Plot Space Delegate Methods
-(BOOL)plotSpace:(CPTPlotSpace *)space shouldHandlePointingDeviceDraggedEvent:(UIEvent *)event atPoint:(CGPoint)point
{
    //graph.plotAreaFrame.paddingLeft などをしている場合はx座標の調整が必要
    NSLog(@"point.x : %f, ,point.y : %f",point.x,point.y);
    return NO;
}
```
###グラフ上のplotSymbolからパラメータを取得する

YFViewController.h

```objc
#import <UIKit/UIKit.h>
#import "CorePlot-CocoaTouch.h"

@interface YFViewController : UIViewController<CPTPlotDataSource,CPTScatterPlotDelegate>
@property(weak,nonatomic) IBOutlet CPTGraphHostingView * graphView;
@property CPTScatterPlot *onePlot;
@end
```
YFViewController.m

```objc
- (void)viewDidLoad
{
    [super viewDidLoad];
    self.onePlot = [[CPTScatterPlot alloc] init];
    self.onePlot.delegate = self;
}
#pragma mark -
#pragma mark - ScatterPlot methods
- (void)scatterPlot:(CPTScatterPlot *)plot plotSymbolWasSelectedAtRecordIndex:(NSUInteger)index
{
    NSLog(@"TAP! %d 番目" ,index);
    //プロットデータに使用している配列から値を取り出すなど
}
```

##plotSymbolをplotの状態によって変える

![スクリーンショット 2013-12-21 5.11.44.png](https://qiita-image-store.s3.amazonaws.com/0/12362/ce81b1f6-6882-3da1-ffda-de142fa10e64.png)

YFViewController.h

```objc
#import <UIKit/UIKit.h>
#import "CorePlot-CocoaTouch.h"

@interface YFViewController : UIViewController<CPTPlotDataSource>
@property(weak,nonatomic) IBOutlet CPTGraphHostingView * graphView;
@property CPTScatterPlot *onePlot;
@end
```
YFViewController.m

```objc
- (void)viewDidLoad
{
    [super viewDidLoad];
    self.onePlot = [[CPTScatterPlot alloc] init];
    self.onePlot.dataSource = self;
    self.onePlot.identifier = identifier;
}

-(CPTPlotSymbol *)symbolForScatterPlot:(CPTScatterPlot *)plot recordIndex:(NSUInteger)idx
{
    NSLog(@"plot.identifier: %@",plot.identifier);
    CPTMutableLineStyle *oneSymbolLineStyle = [CPTMutableLineStyle lineStyle];
	oneSymbolLineStyle.lineColor = [CPTColor redColor];
	CPTPlotSymbol *oneSymbol = [CPTPlotSymbol ellipsePlotSymbol];

	oneSymbol.fill = [CPTFill fillWithColor:[CPTColor whiteColor]];
	oneSymbol.lineStyle = oneSymbolLineStyle;
	oneSymbol.size = CGSizeMake(2.0f*idx, 2.0f*idx);
    return oneSymbol;
}
```

#公式以外の参考サイト
http://www.raywenderlich.com/13269/how-to-draw-graphs-with-core-plot-part-1
http://blog.essencework.com/post/8821955981/put-some-touch-interactive-to-coreplot-on-ipad-part-1
#最後に
CorePlotでグラフを書くことを思ったら
ググってもリファレンスをみても難しいことが多く
最後は公式のサンプルコード、headerファイルから持ってくる、試して納得することがあまりにも多かったです。

専門書やblog記事などで記事が増えることを期待！