布景

随着进入大数据时代,数据越来越多,可视化能将数据以愈加直观的方法展现出来,使数据愈加客观、更具说服力,从而助用户了解和剖析数据。所以今天咱们来看看怎么运用10行 Swift 代码来画一个折线图的可视化图表。

10行代码绘制线柱图 | iOS Swift

技术选型

其实 iOS 端的可视化图表库不多,比较有名的是Charts,但今天我选型了F2Native,首要是因为其图表类型丰厚,支持了7大类型的图表,跨iOS,Android渠道,最终是其完成了图形语法理论,能组合出千变万化的图表,能快速应付事务改变。

开发完成

代码都托管在 GitHub上,如果不想看教程,可直接下载。 咱们运用 CocoaPods 来引进这个库,如果你机器上还没装置,那你首要需求装置它。

sudo gem install cocoapods

1.创立工程

咱们运用 Xcode 创立一个 LineChart-Swift 的工程,File -> new -> Project, 挑选 iOS Tab 下面的 App,点击 Next

10行代码绘制线柱图 | iOS Swift

接下来在 Interface 中挑选 StoryBoard , Language 中挑选 Swift,并点击 Next 完成工程创立

10行代码绘制线柱图 | iOS Swift

2.CocoaPod 设置

接下来要运用 CocoaPod 来引进 F2Native 库,首要运用命令行进入到方才项目的目录中

cd /Users/weiqing.twq/Documents/LineChart-Swift

创立 Podfile

pod init

用一个编辑器翻开目中的 Podfile 并引进 F2(这儿要注意下是叫F2)

10行代码绘制线柱图 | iOS Swift
装置

pod install

装置完成后,在目录下会有一个 LineChart-Swift.xcworkspace 文件,双击翻开(记住关闭创立时分主动翻开的xCode窗口)。

10行代码绘制线柱图 | iOS Swift

3.预备数据

由于引擎数据的入参格式是一个NSArray的数组,我预备了如下的数据, 并保存为data.json文件。

[{  "genre": "Sports",  "sold": 275}, {  "genre": "Strategy",  "sold": 115}, {  "genre": "Action",  "sold": 120}, {  "genre": "Shooter",  "sold": 350}, {  "genre": "Other",  "sold": 150}]

把data.json并拖入到工程中, 以备后续运用

10行代码绘制线柱图 | iOS Swift

4.编写代码

在 ViewController.swift 中引进 F2

import F2

在viewDidLoad中制作图表,详细的制作过程现已注释在代码中

override func viewDidLoad() {
    super.viewDidLoad()  
    //step1 初始化一个view来承载图表的显现
    self.canvasView = F2CanvasView.canvas(CGRect(x:0, y: 100, width: self.view.frame.width, height: 200))
    self.view.addSubview(self.canvasView!)
    //step2 创立一个chart目标预备制作图表
    self.chart = F2Chart.init(self.canvasView!.bounds.size, name: "LineChart-Swift")
    //step3 把chart和canvasView相关起来,因为chart烘托好后需求显现在view上面
    self.chart!.canvas()(self.canvasView!)
        //设置chart的内边距 可选
    self.chart!.padding()(20, 20, 20, 20)
    //step 4从咱们方才预备的数据中读取数据
    let jsonPath = Bundle.main.path(forResource: "data", ofType: "json")
    guard let jsonString = try? String.init(contentsOfFile: jsonPath!) else {
      return
    }
    let jsonData = F2Utils.toJsonArray(jsonString)
        //并把设置到chart中
    self.chart!.source()(jsonData)
 
    //step5 在chart上画一条线,x轴数据的映射是genre字段,y轴数据的映射是sold字段
    self.chart!.line()().position()("genre*sold")
    //step6 烘托并显现在view上
    self.chart!.render()();
  }

如果你看到这边,那么恭喜,以上就是制作折线图需求的一切代码,一共13行代码,咱们现已完成折线图的制作,作用如下

10行代码绘制线柱图 | iOS Swift

方才也提到了,F2Native 完成了图形语法,能经过组合的方法快速应付事务迭代的快速,假设突然需求变了,要画柱图了,那咱们只需改变 step5 中的那行代码中的 line 为 interval 即可

self.chart!.interval()().position()("genre*sold")

柱图就出来了,是不是很便利

10行代码绘制线柱图 | iOS Swift

写在最终

当然这还是最基本的图表显现,真实事务中应该还会有一些更杂乱的规划,比方y轴上要附加单位,比方元,其次柱的色彩要有区别,最终是手势按上去最好会有一些 Tip 说明。这些我会在后面的文章在详细介绍,感谢我们的阅读,代码已提交到 GitHub 了,欢迎我们下载。

第二篇关于更杂乱规划的文章也现已写好,欢迎查看 10行代码制作线柱图-进阶 | iOS Swift。