[Swift]グラフを作成するライブラリChartsを使って折れ線グラフを描画してみた

この記事ではChartsライブラリを使って折れ線グラフを描画してみたので、その手順をシェアしていきたいと思います。
2021.06.01

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

Chartsとは?

導入

  • CocoaPods、Carthage、Swift Package Managerを用いてインストールすることができます。(詳しい導入方法はChartsのGitHubのリンクを参照ください)

現時点での最新バージョン(v4.0.1)は以下の環境が必要なります。

- Xcode 11 / Swift 5 (master branch)
- iOS >= 8.0 (Use as an Embedded Framework)
- tvOS >= 9.0
- macOS >= 10.11

作成した折れ線グラフ

  • 以下の画像が今回作成した折れ線グラフになります。
  • 通常の折れ線グラフを少し曲線にして、アニメーションをかけています。

コード

import UIKit
import Charts

class ViewController: UIViewController {
    
    var chartView: LineChartView!
    var chartDataSet: LineChartDataSet!
    // 今回使用するサンプルデータ
    let sampleData = [88.0, 99.0, 93.0, 67.0, 45.0, 72.0, 58.0, 91.0, 81.0]
    
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
        // グラフを表示する
        displayChart(data: sampleData)
    }
    
    func displayChart(data: [Double]) {
        // グラフの範囲を指定する
        chartView = LineChartView(frame: CGRect(x: 0, y: 200, width: view.frame.width, height: 400))
        // プロットデータ(y軸)を保持する配列
        var dataEntries = [ChartDataEntry]()
        
        for (xValue, yValue) in data.enumerated() {
            let dataEntry = ChartDataEntry(x: Double(xValue), y: yValue)
            dataEntries.append(dataEntry)
        }
        // グラフにデータを適用
        chartDataSet = LineChartDataSet(entries: dataEntries, label: "SampleDataChart")
        
        chartDataSet.lineWidth = 5.0 // グラフの線の太さを変更
        chartDataSet.mode = .cubicBezier // 滑らかなグラフの曲線にする
        
        chartView.data = LineChartData(dataSet: chartDataSet)
        
        // X軸(xAxis)
        chartView.xAxis.labelPosition = .bottom // x軸ラベルをグラフの下に表示する
        
        // Y軸(leftAxis/rightAxis)
        chartView.leftAxis.axisMaximum = 100 //y左軸最大値
        chartView.leftAxis.axisMinimum = 0 //y左軸最小値
        chartView.leftAxis.labelCount = 6 // y軸ラベルの数
        chartView.rightAxis.enabled = false // 右側の縦軸ラベルを非表示
        
        // その他の変更
        chartView.highlightPerTapEnabled = false // プロットをタップして選択不可
        chartView.legend.enabled = false // グラフ名(凡例)を非表示
        chartView.pinchZoomEnabled = false // ピンチズーム不可
        chartView.doubleTapToZoomEnabled = false // ダブルタップズーム不可
        chartView.extraTopOffset = 20 // 上から20pxオフセットすることで上の方にある値(99.0)を表示する
        
        chartView.animate(xAxisDuration: 2) // 2秒かけて左から右にグラフをアニメーションで表示する
        
        view.addSubview(chartView)
    }
}

まとめ

  • Chartsライブラリを使うことで簡単にグラフを作成することが出来ました。
  • 今回紹介した内容以外にもデザインを変更することが出来るので、今後も様々なグラフの作成方法を学んでいきたいと思います。

参考

https://github.com/danielgindi/Charts