LineChartFilledViewController.swift 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. //
  2. // LineChartFilledViewController.swift
  3. // ChartsDemo-iOS
  4. //
  5. // Created by Jacob Christie on 2017-07-09.
  6. // Copyright © 2017 jc. All rights reserved.
  7. //
  8. #if canImport(UIKit)
  9. import UIKit
  10. #endif
  11. import DGCharts
  12. class LineChartFilledViewController: DemoBaseViewController {
  13. @IBOutlet var chartView: LineChartView!
  14. @IBOutlet var sliderX: UISlider!
  15. @IBOutlet var sliderY: UISlider!
  16. @IBOutlet var sliderTextX: UITextField!
  17. @IBOutlet var sliderTextY: UITextField!
  18. override func viewDidLoad() {
  19. super.viewDidLoad()
  20. // Do any additional setup after loading the view.
  21. self.title = "Filled Line Chart"
  22. chartView.delegate = self
  23. chartView.backgroundColor = .white
  24. chartView.gridBackgroundColor = UIColor(red: 51/255, green: 181/255, blue: 229/255, alpha: 150/255)
  25. chartView.drawGridBackgroundEnabled = true
  26. chartView.drawBordersEnabled = true
  27. chartView.chartDescription.enabled = false
  28. chartView.pinchZoomEnabled = false
  29. chartView.dragEnabled = true
  30. chartView.setScaleEnabled(true)
  31. chartView.legend.enabled = false
  32. chartView.xAxis.enabled = false
  33. let leftAxis = chartView.leftAxis
  34. leftAxis.axisMaximum = 900
  35. leftAxis.axisMinimum = -250
  36. leftAxis.drawAxisLineEnabled = false
  37. chartView.rightAxis.enabled = false
  38. sliderX.value = 100
  39. sliderY.value = 60
  40. slidersValueChanged(nil)
  41. }
  42. override func updateChartData() {
  43. if self.shouldHideData {
  44. chartView.data = nil
  45. return
  46. }
  47. self.setDataCount(Int(sliderX.value), range: UInt32(sliderY.value))
  48. }
  49. func setDataCount(_ count: Int, range: UInt32) {
  50. let yVals1 = (0..<count).map { (i) -> ChartDataEntry in
  51. let val = Double(arc4random_uniform(range) + 50)
  52. return ChartDataEntry(x: Double(i), y: val)
  53. }
  54. let yVals2 = (0..<count).map { (i) -> ChartDataEntry in
  55. let val = Double(arc4random_uniform(range) + 450)
  56. return ChartDataEntry(x: Double(i), y: val)
  57. }
  58. let set1 = LineChartDataSet(entries: yVals1, label: "DataSet 1")
  59. set1.axisDependency = .left
  60. set1.setColor(UIColor(red: 255/255, green: 241/255, blue: 46/255, alpha: 1))
  61. set1.drawCirclesEnabled = false
  62. set1.lineWidth = 2
  63. set1.circleRadius = 3
  64. set1.fillAlpha = 1
  65. set1.drawFilledEnabled = true
  66. set1.fillColor = .white
  67. set1.highlightColor = UIColor(red: 244/255, green: 117/255, blue: 117/255, alpha: 1)
  68. set1.drawCircleHoleEnabled = false
  69. set1.fillFormatter = DefaultFillFormatter { _,_ -> CGFloat in
  70. return CGFloat(self.chartView.leftAxis.axisMinimum)
  71. }
  72. let set2 = LineChartDataSet(entries: yVals2, label: "DataSet 2")
  73. set2.axisDependency = .left
  74. set2.setColor(UIColor(red: 255/255, green: 241/255, blue: 46/255, alpha: 1))
  75. set2.drawCirclesEnabled = false
  76. set2.lineWidth = 2
  77. set2.circleRadius = 3
  78. set2.fillAlpha = 1
  79. set2.drawFilledEnabled = true
  80. set2.fillColor = .white
  81. set2.highlightColor = UIColor(red: 244/255, green: 117/255, blue: 117/255, alpha: 1)
  82. set2.drawCircleHoleEnabled = false
  83. set2.fillFormatter = DefaultFillFormatter { _,_ -> CGFloat in
  84. return CGFloat(self.chartView.leftAxis.axisMaximum)
  85. }
  86. let data: LineChartData = [set1, set2]
  87. data.setDrawValues(false)
  88. chartView.data = data
  89. }
  90. @IBAction func slidersValueChanged(_ sender: Any?) {
  91. sliderTextX.text = "\(Int(sliderX.value))"
  92. sliderTextY.text = "\(Int(sliderY.value))"
  93. self.updateChartData()
  94. }
  95. }