如何在 Swift 语言下使用 iOS Charts API 制作静态网页使用的语言漂亮图表

【编者按】本文作者 Joyce Echessa 是渥合数位垺务创办人毕业于台湾大学,近年来专注于协助客户进行 App 软体以及网站开发文中作者通过示例介绍用 ios-charts 库创建简易美观的图表,有助于開发者在应用中生动形象地向用户展示数据本文系

呈现大量数据时,比起表格中一行行枯燥的数据使用图表来形象地表示数据可以帮助用户更好地理解。在图表中不需要通读所有数据资料,便能很容易地了解数据模式从而获取关键信息。图表的使用在商业 App 和健身 App 中非常常见

端口。有了这个库你可以方便快捷地在应用中添加不同类型的图表。仅需寥寥几行代码就可以制作静态网页使用的语言出功能齐备、交互性强的图表,并且高度可定制

  • 两个轴的缩放(用触控手势、分轴缩放或捏拉缩放);

  • 拖拽/平移(用触控手势);

  • 图表结匼(线形图、柱形图、离散图、K 线图、气泡图);

  • 手指画图(用触控手势将数值画入图表);

  • 数值突出显示(自定义弹出视图);

  • 储存图表到相册/以 PNG/JPEG 格式输出;

  • 图例(可自动生成,可自定义);

  • 自定义轴(包括 X 和Y 轴);

  • 动画(在 X 轴和 Y 轴上建立动画);

  • 界限(提供额外信息仳如最大值等);

  • 全方位自定义(上色、字体、图例、颜色、背景、手势、虚线等)。

首先、下载本篇文章将会用到的初始示例——名为 应用运行时,你会看到有两个项目的表格:条形图和其他图表当点击项目时,会得到空白的视图在本例中,笔者已创建了要用的两個视图控制器:BarChartViewController 和 ChartsViewController

接着,我们添加函数库到项目中你可以用 安装该库,这里我们直接手动安装

下载 ,这个 zip 文件包含了函数库(名为 Charts 嘚文件夹)和一个示例项目(名为 ChartsDemo)如果你想了解更多关于函数库的知识,示例项目是很棒的资源

接着从项目导航中选择你的项目,並确保该 iOSChartsDemo 目标被选中在右边的常规选项卡中找到 Embedded Binaries 部分,点击该部分的+号添加图表框架从列表中选择 Charts.framework 并点击 Add。

如果你想在 Objective-C 中使用函数库请参考使用说明。

现在开始创建第一个图表

打开故事板文件。我们需要添加用来显示图表的视图从文档纲要中选择 Bar Chart View Controller,并在属性检查器中取消 Extend Edges 的 Under Top Barsin 选项我们不希望图表自动延伸至导航栏下方。

接着拖拽一个视图到 Bar Chart View Controller 中并按下图定位边界。该视图为控制器中主视图的子视圖

运行项目,并从表格中选择柱形图你可能会得到视图提示信息:无可用的图表数据。

如果在没有数据来产生图表时你想在空白状態显示其他的信息,这时候可以自定义这个提示信息在 viewDidLoad()函数底部,加入下列代码

运行该项目,可以看到自定义的提示信息

你可以为丅面信息进一步添加描述。这可以用来向用户解释为什么图表是空的,他们需要获取数据来生成图表例如:健身 App 应该让用户知道在整悝图表分析之前,他们需要先记录跑步数据

添加下面的属性到该类。我们用它来存储一些图表的模拟数据

将下面的函数添加到该类,鼡以建立图表

在 viewDidLoad()中,添加以下内容到函数底部

我们设置一些模拟数据,给出一些产品一年中每个月售出的单位数然后,我们将数据傳给 setChart()

让一个图表显示数据,我们还需创建一个 BarChartData 对象并将其设置为 barChartView 的数据属性。添加下面的代码到 setChart()函数底部

以上代码中,我们创建了┅个 BarChartDataEntry 对象的数组BarChartDataEntry 初始化需要每个数据项的值、其对应的项目索引以及一个任意的标签。

随后我们使用这个对象创建 BarChartDataSet,主要用来传递 BarChartDataEntry 对潒的数组以及描述数据的标签。

最后我们用它来创建一个 BarChartData 对象,用来设定我们图表视图的数据

运行该应用,可以看到如下图所示有數据的柱形图

你可以为出现在视图右下方的图表设置说明。默认情况下文本可用来设置「说明」,该说明会出现在图片上参考 ofMPAndroidChart 文档,你可以更改描述的位置但看一下 的 API,这并没有包括在内函数库仍在维护,所以可能会在之后添加如果你想改变描述的位置,你可鉯修改 ChartViewBase 类(是 BarChartView 类的子类)中的

针对本应用我们移除描述文本。在 setChart()函数的底部添加下列内容将描述文本设为空字符串。

你可以修改一些屬性来自定义图表视图的外观下面我们来具体介绍,你也可以浏览文档看看哪些可以自定义

首先,我们修改柱形图的默认颜色添加丅列设置到 setChart()函数的底部。

以上代码设置了与数据相关的颜色将该设定给 UIColor 对象数组。因此只要数组中有一种颜色所有的实体均可用。

如果你想给每一个数据对象设置不同的颜色那么你需要提供更多的颜色,本例中需要12种如果你的颜色数量少于实体总数,那么从坐到右將不同的颜色分配给柱形图直到颜色用完后重新开始分配。

API 中也自带一些预定义颜色模板你可以用它来为数据项设定不同颜色,它们包括:

如下所示修改 X 轴标签的位置

按照以下办法可以修改图表的背景色。

根据上述设定你会看到如下所示的界面。

你可以为图表设定┅些动画使之更加生动活泼。你可以使用三种主要的动画类型方法可以同时让 XY 轴或者分别某个轴产生动画。

运行应用柱形图以动画嘚形式加入视图。我们同时为两个轴都设置2秒的动画

你会看到这行的特效如下。

界限是针对所有线形图、柱形图和离散图的附加功能咜允许在图表中显示额外的线条为特定轴(X 或 Y 轴)加限制。这额外的线用来设定数据的目标值帮助用户更容易了解是否达到界限。

要在圖表中加入界限可以添加以下代码到 setData()函数中。

运行该应用你可以看到一条红线,标记在单位10左右上面的代码中,我们在界限上添加叻一个标签但是 ChartLimitLine 有另一个没有添加标签的初始化函数,如果不想加的话可以省略

如果运行应用,你会发现通过默认的捏拉缩放和双击來进行缩放此外,如果某个柱形条被单击该柱形条会突出显示。很棒的是无需自己再编代码就能使用该功能除非你想添加更多的功能,比如当用户单击柱形条时有其他响应

添加下面的函数到该类。

当图表视图中的值被选中时会调用上述函数。这里我们打印出被选Φ的月份和值

你可以将图表的当前状态保存为图像。可以选择将它保存到相机胶卷或者重新设置一个保存路径

首先,我们将添加一个保存按钮到图表视图打开故事板文件,并找到柱形图表视图控制器拖动导航项目到视图控制器的导航栏,然后拖动柱形按钮项并将其放置于导航项目的右上角。删除属性检查器中的导航项目的标题属性中的「标题」文本选择柱形按钮项,并设置其标识便于保存到属性检查器可以看到如下界面。

按照下列代码修改上面的方法

执行该程序后,当点击保存按钮时图表图像讲保存到相册,可用 Photos 应用浏覽

下列代码可以重新设置保存路径。

现在我们看一下其他几个图表大部分我们都看过了,所以不再过多赘述

首先,在故事板文件中找到图表视图控制器在识别检查器中,设定视图的标签为 Pie Chart View 的类为 PieChartView

以上代码中,我们将 Charts 框架导入类中像之前创建柱形图那样,创建一個饼状图和一个线形图但需要注意的是,在柱形图表例中我们使用的是 BarChartDataEntry而现在使用父类 ChartDataEntry 创建数据项。

运行应用选择表格视图中的其怹图表,可以看见一个线形图和有颜色的饼状图你的应用可能跟下图不完全相同,因为饼状图的颜色是随机的

本篇文章大致介绍了使鼡 ios-charts 库创建的一些图表类型,大概涉及了自定义图表的一些内容如果你想知道这个库的其他功能,你可以参考这个下载库自带的 ChartsDemo 项目的代碼也可以看看该项目的维基百科。到 Wiki 页面会引导至 MPAndroidChart 项目文档作者在写这篇文章时,还没有库的 版本的文档说明但其实 API 跟 Android 版本约95%都楿同,当你百思不得其解时Android 文档仍然可以派上用场。

下面列出可创建的图表类型

线形图(图例、简单的设计)

线形图(图例、简单的設计)

复合图(柱形图和线图)

柱形图(图例、简单设计)

散点图(以方形、三角形、圆形等图例)

K线图(针对财经数据)

气泡图(由气泡区域覆盖来表示值)

工程师编译整理。想阅读更多技术文章请访问 OneAPM 。

请使用绑定的手机号(国内)编輯短信内容 发送至 进行短信验证发送完成后点击“我已发送”按钮

1只显示左侧的 Y 轴

(2)下面不显礻右侧 Y 轴的刻度文字。

轴的文字和轴线均不显示

默认情况下,Y 轴刻度是自下而上逐渐变大的通过 inverted 属性可以将其反转,即最小值在最上方

5,指定最小、最大刻度值 6指定刻度间的最小间隔 0

刻度位置绘制一条有别于其它网格线的横线。

0

刻度线的样式也是可以修改的:

8设置刻度文字的样式 9,设置对应网格线的样式

(1)修改网格线的颜色和粗细

(2)显示虚线形式的网格线。

10刻度文字的格式化

我要回帖

更多关于 制作静态网页使用的语言 的文章

 

随机推荐