プロットを設定する
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];
やっていることは…
- 棒の色を指定して棒グラフ(CPTBarPlot)を作る。
- X軸の値の基本になる値は 0。これを変更すると棒グラフの棒が上下に動く。
- データソースは自分自身(ViewController)とする。
- この棒グラフの id は Bar Plot 1 とする。
- で、この棒グラフ(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 プロトコルのメソッドを用意しよう。