[Swift] [iOS] チャート表示ライブラリ [ios-charts]

#目的
swiftでのios開発時に、グラフやチャートの表示にめっちゃ使えるライブラリ、ios-chartsの使い方をメモっておこうと思います。

#ios-chartsとは
Daniel Cohen Gindi氏作成のチャート、グラフ表示を簡単にするライブラリ。

- Github: [danielgindi/ios-charts](https://github.com/danielgindi/ios-charts)
- デモ: [ios-charts/ChartsDemo/](https://github.com/danielgindi/ios-charts/tree/master/ChartsDemo)

#インストール
CocoaPodsを使用。
Podfileに以下を記述

```
platform :ios, '9.0'
pod 'Charts'
use_frameworks!
```

#できること

##グラフ、チャートの表示
### Line Chart (折れ線グラフ)
![Simulator Screen Shot 2016.02.01 14.15.55.png](https://qiita-image-store.s3.amazonaws.com/0/111677/6ba1aa84-3d8c-39e5-63d1-09467c8989d5.png)
　　

### Bar Chart (棒グラフ)
![Simulator Screen Shot 2016.02.01 14.18.58.png](https://qiita-image-store.s3.amazonaws.com/0/111677/8101f601-5a44-56ac-0903-41452bde865c.png)
　　

### Horizontal Bar Chart (横棒グラフ)
![Simulator Screen Shot 2016.02.01 14.19.10.png](https://qiita-image-store.s3.amazonaws.com/0/111677/3eed1113-fe11-7e94-0bfe-43ae64d110a1.png)
　　

### Combined Chart (コンビネーショングラフ)
![Simulator Screen Shot 2016.02.01 14.19.16.png](https://qiita-image-store.s3.amazonaws.com/0/111677/2749fce2-8fa1-aef0-9bd8-685335c62002.png)
　　

### Pie Chart (円グラフ)
![Simulator Screen Shot 2016.02.01 14.19.23.png](https://qiita-image-store.s3.amazonaws.com/0/111677/8ab633d6-9fc9-057e-c873-85cf356ef802.png)
　　

### Scatter Bar Chart (散布図)
![Simulator Screen Shot 2016.02.01 14.19.27.png](https://qiita-image-store.s3.amazonaws.com/0/111677/c4b9b9d2-a6e2-c4b9-c9f6-59fb3f5d0b38.png)
　　

### Bubble Chart (バブルチャート)
![Simulator Screen Shot 2016.02.01 14.19.31.png](https://qiita-image-store.s3.amazonaws.com/0/111677/4ef88821-18b5-fe9d-c9d0-e252b76b3628.png)
　　

### Stacked Bar Chart (積み上げ棒グラフ)
![Simulator Screen Shot 2016.02.01 14.19.34.png](https://qiita-image-store.s3.amazonaws.com/0/111677/58c82495-b454-69d5-4936-ce9c5676f494.png)  
  　　

### Stacked Bar negative Chart (積み上げ横棒グラフ、人口ピラミッドグラフ)
![Simulator Screen Shot 2016.02.01 14.19.40.png](https://qiita-image-store.s3.amazonaws.com/0/111677/c78db5f6-756c-bda0-d047-5b9b7b3897da.png)
　　

### Multiple Line Chart (複数の折れ線グラフ)
![Simulator Screen Shot 2016.02.01 14.19.47.png](https://qiita-image-store.s3.amazonaws.com/0/111677/18f716f5-30cc-b98b-2c3b-82a0d74c1e53.png)
　　

### Multiple Bar Chart (複数の棒グラフ)
![Simulator Screen Shot 2016.02.01 14.19.52.png](https://qiita-image-store.s3.amazonaws.com/0/111677/8ebfb764-866e-6ad5-3f65-f9b2b6f61e5c.png)
　　

### Candle Stick Chart (ローソク足チャート)
![Simulator Screen Shot 2016.02.01 14.19.55.png](https://qiita-image-store.s3.amazonaws.com/0/111677/7a828b86-5777-0a88-7d05-7a4e40bb9b9a.png)
　　

### Cubic Line Chart
![Simulator Screen Shot 2016.02.01 14.20.02.png](https://qiita-image-store.s3.amazonaws.com/0/111677/1d40f0b3-832a-ca90-9697-4911ea485f37.png)
　　

### Radar Bar Chart (レーダーチャート)
![Simulator Screen Shot 2016.02.01 14.20.07.png](https://qiita-image-store.s3.amazonaws.com/0/111677/59d11140-9426-3c70-637c-b3f7e14bad0b.png)
　　

### Sinus Bar Chart
![Simulator Screen Shot 2016.02.01 14.20.28.png](https://qiita-image-store.s3.amazonaws.com/0/111677/995b4caf-7407-6aca-d157-5a94555d6b01.png)
　　

#使用例
## 完成図
![Simulator Screen Shot 2016.02.01 15.18.00.png](https://qiita-image-store.s3.amazonaws.com/0/111677/e179f485-bbae-0d9c-71eb-4ceac41f10c3.png)

## コード
storyboardにViewを配置する。
ViewのCustom ClassにBarChartViewを指定し、コードにIBOutletで接続。

```swift
@IBOutlet var barChartView: BarChartView!
```  
  
最終的には以下のように記述。

```swift
import UIKit
import Charts

class ViewController: UIViewController {
    
    // storyboardから接続
    @IBOutlet weak var barChartView: BarChartView!
    
    var months: [String]!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        months = ["1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月"]
        let unitsSold = [50.3, 68.3, 113.3, 115.7, 160.8, 214.0, 220.4, 132.1, 176.2, 120.9, 71.3, 48.0]
        
        barChartView.animate(yAxisDuration: 2.0)
        barChartView.pinchZoomEnabled = false
        barChartView.drawBarShadowEnabled = false
        barChartView.drawBordersEnabled = true
        barChartView.descriptionText = "京都府の月毎の降水量グラフ"
        
        setChart(months, values: unitsSold)
    }
    
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }
    
    func setChart(dataPoints: [String], values: [Double]) {
        barChartView.noDataText = "You need to provide data for the chart."
        
        var dataEntries: [BarChartDataEntry] = []
        
        for i in 0..<dataPoints.count {
            let dataEntry = BarChartDataEntry(value: values[i], xIndex: i)
            dataEntries.append(dataEntry)
        }
        
        let chartDataSet = BarChartDataSet(yVals: dataEntries, label: "降水量")
        let chartData = BarChartData(xVals: months, dataSet: chartDataSet)
        barChartView.data = chartData  
    }
    
}
```
  
#詳細な使用例
[[Swift] [iOS] チャート表示ライブラリ [ios-charts] 詳細な使い方 (メソッド、プロパティ)](http://qiita.com/touyu/items/9b77647cf7c97362da10)