[Swift通天遁地]三、手势与图表-(5)创建带有标题、图例、坐标轴的柱形图表
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
➤微信公众号:山青咏芝(shanqingyongzhi)
➤博客园地址:山青咏芝(https://www.cnblogs.com/strengthen/)
➤GitHub地址:https://github.com/strengthen/LeetCode
➤原文地址:https://www.cnblogs.com/strengthen/p/10210784.html
➤如果链接不是山青咏芝的博客园地址,则可能是爬取作者的文章。
➤原文已修改更新!强烈建议点击原文地址阅读!支持作者!支持原创!
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
本文将演示如何如何创建一个漂亮的柱形图表。
首先确保在项目中已经安装了所需的第三方库。
点击【Podfile】,查看安装配置文件。
1 platform :ios, '12.0' 2 use_frameworks! 3 4 target 'DemoApp' do 5 source 'https://github.com/CocoaPods/Specs.git' 6 pod 'Charts' 7 end
根据配置文件中的相关配置,安装第三方库。
然后点击打开【DemoApp.xcworkspace】项目文件。
为了更好的显示柱形图标需要调整模拟器的朝向。
【DemoApp】->【General】
->【Device Orientation】取消勾选【Portrait】肖像选项,使模拟器保持横向显示。
在项目导航区,打开视图控制器的代码文件【ViewController.swift】
现在开始编写代码,创建一个带有标题、图例、坐标轴的柱形图表。
1 import UIKit 2 //首先在当前的类文件中,引入已经安装的第三方类库 3 import Charts 4 5 class ViewController: UIViewController { 6 7 override func viewDidLoad() { 8 super.viewDidLoad() 9 // Do any additional setup after loading the view, typically from a nib. 10 11 //创建一个包含6个数字的数组,作为第一组柱形的数据 12 let values1: [Double] = [8, 104, 81, 93, 52, 44 ] 13 //创建一个包含6个数字的数组,作为第二组柱形的数据 14 let values2: [Double] = [76, 25, 20, 13, 52, 57] 15 //创建一个包含6个数字的数组,作为第三组柱形的数据 16 let values3: [Double] = [101, 75, 28, 23, 45, 91] 17 //柱形图将用来显示三组数据的趋势 18 19 //依次创建三个图表数据记录 20 var entries1: [ChartDataEntry] = Array() 21 var entries2: [ChartDataEntry] = Array() 22 var entries3: [ChartDataEntry] = Array() 23 24 //通过一个循环 25 for (i, value) in values1.enumerated() 26 { 27 //将第一个数组中的数字,添加到图表数据记录中。 28 entries1.append(BarChartDataEntry(x: Double(i), y: value)) 29 } 30 31 //通过一个循环 32 for (i, value) in values2.enumerated() 33 { 34 //将第二个数组中的数字,添加到图表数据记录中。 35 entries2.append(BarChartDataEntry(x: Double(i), y: value)) 36 } 37 38 //通过一个循环 39 for (i, value) in values3.enumerated() 40 { 41 //将第二个数组中的数字,添加到图表数据记录中。 42 entries3.append(BarChartDataEntry(x: Double(i), y: value)) 43 } 44 45 //创建第一个数据集,并设置数据集的值域和标签文字 46 let dataSet = BarChartDataSet(values: entries1, label: "Company A") 47 //同时设置该数据集对应柱形的填充颜色 48 dataSet.setColor(NSUIColor(red: 229/255, green: 140/255, blue: 154/255, alpha: 1)) 49 50 //创建第二个数据集,并设置数据集的值域和标签文字 51 let dataSet2 = BarChartDataSet(values: entries2, label: "Company B") 52 //同时设置该数据集对应柱形的填充颜色 53 dataSet2.setColor(NSUIColor(red: 243/255, green: 209/255, blue: 142/255, alpha: 1)) 54 55 //创建第三个数据集,并设置数据集的值域和标签文字 56 let dataSet3 = BarChartDataSet(values: entries3, label: "Company C") 57 //同时设置该数据集对应柱形的填充颜色 58 dataSet3.setColor(NSUIColor(red: 172/255, green: 234/255, blue: 254/255, alpha: 1)) 59 60 //初始化一个柱形图表数据对象,设置对象的数据集属性。 61 let data = BarChartData(dataSets: [dataSet, dataSet2, dataSet3]) 62 //设置柱形的宽度为0.25 63 data.barWidth = 0.25 64 65 //创建一个指定显示区域的柱形图表视图 66 let chart = BarChartView(frame: CGRect(x: 0, y: 40, width: 560, height: 240)) 67 //设置图表视图的背景颜色为无色 68 chart.backgroundColor = NSUIColor.clear 69 //设置左侧的坐标轴的最小值是0 70 chart.leftAxis.axisMinimum = 0.0 71 //设置右侧的坐标轴的最小值是0 72 chart.rightAxis.axisMinimum = 0.0 73 //将图表数据对象,设置为柱形图表视图的数据属性 74 chart.data = data 75 //强制将图表的子元素进行组合,并忽略它们在屏幕上的位置。 76 chart.shouldGroupAccessibilityChildren = true 77 //设置图表在水平方向上可被拖动的距离 78 chart.setDragOffsetX(100) 79 //设置图表允许被缩放 80 chart.setScaleEnabled(true) 81 //在水平轴的两次,各添加柱形一半的宽度, 82 //使所有的柱形都可以被全部显示。 83 chart.fitBars = true 84 //将数据集组合起来 85 chart.groupBars(fromX: -1,//起点位置 86 groupSpace: 0.2, //组间距 87 barSpace: 0.05)//柱形的间距 88 89 //将配置好的图表,添加到根视图中。 90 self.view.addSubview(chart) 91 } 92 93 override func didReceiveMemoryWarning() { 94 super.didReceiveMemoryWarning() 95 // Dispose of any resources that can be recreated. 96 } 97 }