プロットを設定する

Core-Plot では、棒グラフの棒や線グラフの線などのグラフの中身は CPTPlot というクラスになる。で、棒グラフや線グラフ用に専用のクラスが用意されてる。

棒グラフ 円グラフ 線グラフ
CPTBarPlot CPTPieChart CPTScatterPlot
範囲グラフ? 売買グラフ?
CPTRangePlot CPTTradingRangePlot

範囲グラフ?と売買グラフ?は日本語でなんて言うのか知らないのだけど、まぁ上記5種類が用意されている。
線グラフは線を引かなければ散布図になるし、これら5種類で大体のグラフは描けると思う。


今回は棒グラフなので CPTBarPlot を使う。
特に何も設定しないとこんな感じ。

	// First bar plot
	CPTBarPlot *barPlot = [CPTBarPlot tubularBarPlotWithColor:[CPTColor redColor] horizontalBars:NO];
	barPlot.baseValue = CPTDecimalFromString(@"0");
	barPlot.dataSource = self;
	barPlot.identifier = @"Bar Plot 1";
	[graph addPlot:barPlot toPlotSpace:plotSpace];

やっていることは…

  1. 棒の色を指定して棒グラフ(CPTBarPlot)を作る。
  2. X軸の値の基本になる値は 0。これを変更すると棒グラフの棒が上下に動く。
  3. データソースは自分自身(ViewController)とする。
  4. この棒グラフの id は Bar Plot 1 とする。
  5. で、この棒グラフ(CPTBarPlot)をグラフ(graph)のプロットスペースに加える。ここで出てくるプロットスペースは、前に取り出した graph.defaultPlotSpace。

ところで、データソースは自分自身としたのだけど、まだ CPTPlotDataSource プロトコルのメソッドを用意していないので、実際にはこのままだとエラーになる。

2011-08-27 23:38:14.575 MyBarGraph[11952:b303] -[MyBarGraphViewController numberOfRecordsForPlot:]: unrecognized selector sent to instance 0x4c8c790
2011-08-27 23:38:14.578 MyBarGraph[11952:b303] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[MyBarGraphViewController numberOfRecordsForPlot:]: unrecognized selector sent to instance 0x4c8c790'

エラーにならないようにするために、CPTPlotDataSource プロトコルのメソッドを用意しよう。