// // BubbleChartViewController.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 BubbleChartViewController: DemoBaseViewController { @IBOutlet var chartView: BubbleChartView! @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 = "Bubble Chart" self.options = [.toggleValues, .toggleIcons, .toggleHighlight, .animateX, .animateY, .animateXY, .saveToGallery, .togglePinchZoom, .toggleAutoScaleMinMax, .toggleData] chartView.delegate = self chartView.chartDescription.enabled = false chartView.dragEnabled = false chartView.setScaleEnabled(true) chartView.maxVisibleCount = 200 chartView.pinchZoomEnabled = true chartView.legend.horizontalAlignment = .right chartView.legend.verticalAlignment = .top chartView.legend.orientation = .vertical chartView.legend.drawInside = false chartView.legend.font = UIFont(name: "HelveticaNeue-Light", size: 10)! chartView.leftAxis.labelFont = UIFont(name: "HelveticaNeue-Light", size: 10)! chartView.leftAxis.spaceTop = 0.3 chartView.leftAxis.spaceBottom = 0.3 chartView.leftAxis.axisMinimum = 0 chartView.rightAxis.enabled = false chartView.xAxis.labelPosition = .bottom chartView.xAxis.labelFont = UIFont(name: "HelveticaNeue-Light", size: 10)! sliderX.value = 10 sliderY.value = 50 slidersValueChanged(nil) } override func updateChartData() { if self.shouldHideData { chartView.data = nil return } self.setDataCount(Int(sliderX.value), range: UInt32(sliderY.value)) } func setDataCount(_ count: Int, range: UInt32) { let yVals1 = (0.. BubbleChartDataEntry in let val = Double(arc4random_uniform(range)) let size = CGFloat(arc4random_uniform(range)) return BubbleChartDataEntry(x: Double(i), y: val, size: size, icon: UIImage(named: "icon")) } let yVals2 = (0.. BubbleChartDataEntry in let val = Double(arc4random_uniform(range)) let size = CGFloat(arc4random_uniform(range)) return BubbleChartDataEntry(x: Double(i), y: val, size: size, icon: UIImage(named: "icon")) } let yVals3 = (0.. BubbleChartDataEntry in let val = Double(arc4random_uniform(range)) let size = CGFloat(arc4random_uniform(range)) return BubbleChartDataEntry(x: Double(i), y: val, size: size) } let set1 = BubbleChartDataSet(entries: yVals1, label: "DS 1") set1.drawIconsEnabled = false set1.setColor(ChartColorTemplates.colorful()[0], alpha: 0.5) set1.drawValuesEnabled = true let set2 = BubbleChartDataSet(entries: yVals2, label: "DS 2") set2.drawIconsEnabled = false set2.iconsOffset = CGPoint(x: 0, y: 15) set2.setColor(ChartColorTemplates.colorful()[1], alpha: 0.5) set2.drawValuesEnabled = true let set3 = BubbleChartDataSet(entries: yVals3, label: "DS 3") set3.setColor(ChartColorTemplates.colorful()[2], alpha: 0.5) set3.drawValuesEnabled = true let data = [set1, set2, set3] as BubbleChartData data.setDrawValues(false) data.setValueFont(UIFont(name: "HelveticaNeue-Light", size: 7)!) data.setHighlightCircleWidth(1.5) data.setValueTextColor(.white) 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() } }