その後のその後

iOSエンジニア 堤 修一のブログ github.com/shu223

iPhone用グラフ描画ライブラリ s7graphview の使い方

OpenCVを使って画像処理する際に、パラメータチューニングなどで
画像のヒストグラムをみる必要があって試したライブラリ。


値を渡せばグラフを描画したviewを生成してくれて、
それをaddSubviewするだけ、という大変ありがたいシロモノです。



以下、大まかな使い方を紹介します。
(ソースコード一式)https://github.com/shu223/GraphViewTest

1. ファイルを追加する

こちらからs7graphviewをダウンロードし、
以下の3ファイルをプロジェクトに追加します。

  • S7GraphView.h
  • S7GraphView.m
  • S7Macros.h

2. グラフを貼付ける位置と大きさを設定する

S7GraphViewはUIViewのサブクラスなので、
位置や大きさを変えるにはinitWithFrameでCGRectを設定するだけです。

CGRect graphRect = CGRectMake(0, 0, 320, 460);
self.graphView = [[S7GraphView alloc] initWithFrame:graphRect];

3. グラフの本数を設定する

デリゲートメソッドで描画したいグラフの本数を渡します。

- (NSUInteger)graphViewNumberOfPlots:(S7GraphView *)graphView {	
	// ここではとりあえず1本
	return 1;
}

4. データソースの設定

デリゲートメソッドで X軸と Y軸別々に配列を渡します。
ただし配列の要素数は一致している必要があります。

- (NSArray *)graphViewXValues:(S7GraphView *)graphView {

	// ここではとりあえずX軸を 0〜255 に
	NSMutableArray *array = [[NSMutableArray alloc] initWithCapacity:256];
	for ( int i = 0 ; i <= 255 ; i ++ ) {
		[array addObject:[NSNumber numberWithInt:i]];
	}
	
	return array;	
}
- (NSArray *)graphView:(S7GraphView *)graphView yValuesForPlot:(NSUInteger)plotIndex {

	// Y軸は0〜999までの整数をランダムに
	// 値の数はX軸と同じく256個
	NSMutableArray *array = [[NSMutableArray alloc] initWithCapacity:256];
	
	switch (plotIndex) {
			
		default:
		case 0:
			for ( int i = 0 ; i <= 255 ; i ++ ) {
				[array addObject:[NSNumber numberWithInt:rand()%1000]];
			}
			break;
	}
	return array;	
}

x軸、y軸のラベルの設定は、渡した値の範囲をみて勝手にやってくれるようです。
xValuesFormatter / yValuesFormatter プロパティでフォーマット指定や、
xValuesColor / yValuesColor で文字色の指定、
gridXColor / gridYColor で軸の色の指定もできるようです。



上記手順で作成したコードを実行すると、下記のようなグラフが表示されます。