Hatena::ブログ(Diary)

Over&Out その後 このページをアンテナに追加 RSSフィード Twitter

2011-02-01

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 で軸の色の指定もできるようです。



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


f:id:shu223:20110130010156p:image:w240




スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

2009 | 08 |
2011 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2012 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2013 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2014 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 |