// // HorizontalBarChartViewController.swift // ChartsDemo-iOS // // Created by Jacob Christie on 2017-07-09. // Copyright © 2017 jc. All rights reserved. // #if canImport(UIKit) import UIKit #endif import Charts class HorizontalBarChartViewController: DemoBaseViewController { @IBOutlet var chartView: HorizontalBarChartView! @IBOutlet var sliderX: UISlider! @IBOutlet var sliderY: UISlider! @IBOutlet var sliderTextX: UITextField! @IBOutlet var sliderTextY: UITextField! override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view. self.title = "Horizontal Bar Char" self.options = [.toggleValues, .toggleIcons, .toggleHighlight, .animateX, .animateY, .animateXY, .saveToGallery, .togglePinchZoom, .toggleAutoScaleMinMax, .toggleData, .toggleBarBorders] self.setup(barLineChartView: chartView) chartView.delegate = self chartView.drawBarShadowEnabled = false chartView.drawValueAboveBarEnabled = true chartView.maxVisibleCount = 60 let xAxis = chartView.xAxis xAxis.labelPosition = .bottom xAxis.labelFont = .systemFont(ofSize: 10) xAxis.drawAxisLineEnabled = true xAxis.granularity = 10 let leftAxis = chartView.leftAxis leftAxis.labelFont = .systemFont(ofSize: 10) leftAxis.drawAxisLineEnabled = true leftAxis.drawGridLinesEnabled = true leftAxis.axisMinimum = 0 let rightAxis = chartView.rightAxis rightAxis.enabled = true rightAxis.labelFont = .systemFont(ofSize: 10) rightAxis.drawAxisLineEnabled = true rightAxis.axisMinimum = 0 let l = chartView.legend l.horizontalAlignment = .left l.verticalAlignment = .bottom l.orientation = .horizontal l.drawInside = false l.form = .square l.formSize = 8 l.font = UIFont(name: "HelveticaNeue-Light", size: 11)! l.xEntrySpace = 4 // chartView.legend = l chartView.fitBars = true sliderX.value = 12 sliderY.value = 50 slidersValueChanged(nil) chartView.animate(yAxisDuration: 2.5) } override func updateChartData() { if self.shouldHideData { chartView.data = nil return } self.setDataCount(Int(sliderX.value) + 1, range: UInt32(sliderY.value)) } func setDataCount(_ count: Int, range: UInt32) { let barWidth = 9.0 let spaceForBar = 10.0 let yVals = (0.. BarChartDataEntry in let mult = range + 1 let val = Double(arc4random_uniform(mult)) return BarChartDataEntry(x: Double(i)*spaceForBar, y: val, icon: #imageLiteral(resourceName: "icon")) } let set1 = BarChartDataSet(entries: yVals, label: "DataSet") set1.drawIconsEnabled = false let data = BarChartData(dataSet: set1) data.setValueFont(UIFont(name:"HelveticaNeue-Light", size:10)!) data.barWidth = barWidth chartView.data = data } override func optionTapped(_ option: Option) { super.handleOption(option, forChartView: chartView) } // MARK: - Actions @IBAction func slidersValueChanged(_ sender: Any?) { sliderTextX.text = "\(Int(sliderX.value))" sliderTextY.text = "\(Int(sliderY.value))" self.updateChartData() } }