前言
本文主要讲解使用McCharts 图表工具库实现数据可视化的过程。通过学习McCharts等图表工具库,了解这些工具的使用以及用不同的方法实现数据可视化。
折线图作为图表中最常见之一的图表,折线图可以清晰地展示数据随时间或其他变量的变化趋势,帮助用户快速了解数据的总体走向。将多条折线绘制在同一图表中,可以比较不同系列的数据,直观地看出它们之间的差异和关系。如下图所示。
McCharts是什么?
McCharts (莓创图表 )是McUI 提供的一款开箱即用的图表工具库 ,专为Harmony OS 的所有类型的开发人员而设计。该组件库目前支持折线图 、柱状图 、饼图 、散点图。
McCharts 是一个基于ArkTS 语法封装的图表组件,你可以运行在ArkTS 3 +版本(DevEco Studio 3.1.1+)以上的任意版本当中。
为什么选择McCharts?
- McCharts 是一款自研开发的公共组件,基于ArkTS 最新版本。意味着HarmonyOS的新特性我们都支持,并拥有一个庞大的社区,您将拥有所有创建和制作项目的帮助和文档。
- 每个组件都是独立化 的,更好地避免导入不必要的代码。
- 所有开发者拥有创建、改进和纠正任何组件或功能的开源社区。
- 提供了配套的设计资源,充分满足可定制化的需求。
安装
使用McCharts 框架绘制折线图之前需要引入该框架。
McCharts 已经使用OpenHarmony 三方库进行托管,你可以使用OpenHarmony 提供的ohpm 工具安装McCharts 。在DevEco Studio 中,您可以在Terminal(命令行窗口)输入如下的指令进行安装。
bash
ohpm install @mcui/mccharts
安装完成后,可以检查oh-package.json5 文件中是否已经添加了mccharts 的依赖。如下图所示。
绘制折线图
在McCharts 组件库中,要绘制折线图可以使用McLineChart组件。绘制折线图的相关属性也都在此自定义组件中。
1. 引入折线图组件
在项目中要想绘制折线图,首先要引入McLineChart组件,代码如下所示:
javascript
import { McLineChart, Options } from '@mcui/mccharts'
2. 绘制折线图相关的属性
在Options 类中包含了设置折线图的基本属性,涉及legend 、tooltip 、xAxis 、yAxis 、series 等属性。legend 属性设置图例 的相关样式与功能。tooltip 属性设置提示层 的相关样式与功能。xAxis 属性设置X轴 的相关样式与功能。yAxis 属性设置Y轴 的相关样式与功能。series 属性设置折线区 的相关样式与功能。如下图所示。
3. 绘制默认折线图
绘制您所在城市一周的最高气温和最低气温的折线图,如下图所示。
3.1 布局文件
在界面中,添加一个McLineChart组件用来显示折线图。代码如下所示:
scss
Column() {
//添加折线图组件
McLineChart({ options: this.defOptions })
}.width('100%').height(200).backgroundColor('#FFFFFF').borderRadius(10)
3.2 创建Options类,设置折线图的基础属性
在Options 类中,我们可以通过属性来设置折线图的样式,如设置图例 的相关样式与功能,设置提示层 的相关样式与功能,设置X轴 的相关样式与功能,设置Y轴 的相关样式与功能,设置折线区的相关样式与功能。具体代码如下所示:
less
@State defOptions: Options = new Options({
xAxis:{ //设置X轴的相关样式与功能
data:['周一','周二','周三','周四','周五','周六','周日']
},
yAxis:{ //设置Y轴的相关样式与功能
name:'温度'
},
series:[ //设置折线区的相关样式与功能
{
name:'周最高气温',
data:[11, 5, 9, 13, 12, 12, 5]
},
{
name:'周最低气温',
data: [3, 0, 3, 5, 4, 2, 2]
}
]
})
以上就是绘制折线图的核心代码,运行效果如下图所示:
4. 修饰折线图
series属性用来设置折线区的相关样式与功能。包含:折线颜色、折线拐点样式、折线文本标签配置等等。详细的信息如下图所示:
series属性中可以修饰多条折线,可以理解为多条线的集合,我们可以对折线颜色、折线拐点样式、折线文本标签进行美化,代码如下所示:
arduino
series:[
{
name: "周最高气温", //图例文字
color: '#FF4D4F', //图例颜色
lineStyle: { //折线样式配置
width: 2, //折线宽度
color: '#FF4D4F' //折线显色
},
itemStyle: { //折线拐点配置
symbol: 'solidCircle', //拐点类型
symbolSize: 4 //拐点大小
},
data: [11, 5, 9, 13, 12, 12, 5] //数据
},
{
name: "周最低气温", //图例文字
color: '#52C41A', //图例颜色
lineStyle: {
width: 2, //折线宽度
color: '#52C41A' //折线显色
},
itemStyle: { //折线拐点配置
symbol: 'solidCircle', //拐点类型
symbolSize: 4 //拐点大小
},
data: [3, 0, 3, 5, 4, 2, 2] //数据
}
]
以上我们对折线进行了美化,运行效果如下图所示:
5. 修饰图例
默认情况下,设置图表数据后自动生成和绘制图例。图例通常由多个条目组成,每个条目由一个标签、一个形状表示,如下图所示:
我们可以对图例的显示方式和位置等进行设置。在McCharts 框架中可以使用legend 属性来修饰图例,该属性提供了一些常用方法。如图下图所示: 我们可以通过修改legend属性中的参数,并对其进行设置。代码如下所示:
less
legend: { //设置图例的相关样式与功能
top: '5%', //图例距离顶部侧位置
itemWidth: 10, //图形的宽度
itemHeight: 10, //图形的高度
textStyle: { //文本样式配置
color: '#FAAD14', //字体颜色
fontSize: 30, //字体大小
fontWeight: '800' //字体粗细
}
},
以上我们对图例进行了美化,运行效果如下图所示:
6. 修饰x轴样式
在McCharts 框架中,可以看到x轴 默认显示在图表的下方 。我们可以使用xAxis属性来修饰x轴的样式,如设置x轴是否显示,x轴线的样式,刻度信息等,详细的信息如下图所示:
我们可以通过修改xAxis属性中的参数,并对其进行设置。代码如下所示:
arduino
xAxis: {
axisLabel: { //X轴文本标签样式配置
color: '#999999', //字体颜色
fontSize: 28, //字体大小
fontWeight: '600' //字体粗线
},
axisTick: { //刻度线配置
show: true, //控制刻度线显示与隐藏
length: 6, // 刻度线的长度
interval: 4, //刻度线与文本的间隔
lineStyle: { //刻度线样式
color: '#FFFFFF', //线颜色
width: 1 //线宽度
}
},
axisLine: { //x轴线配置
show: true, //控制轴线显示与隐藏 可选值-true显示 false-隐藏
lineStyle: { //轴线样式
color: '#D9D9D9', //线颜色
width: 1, //线宽度
type: 'solid' //线类型
}
},
data: ['周一', '周二', '周三', '周四', '周五', '周六', '周日']
},
运行效果如下图所示:
在xAxis 属性中,formatter函数用来格式化x轴文本标签的值,通过重写此方法使原来的数据转换成符合业务要求的文本格式,如我们将data中的数据替换成如下的格式。
kotlin
data: ['1', '2', '3', '4', '5', '6', '7']
此时,x轴坐标的值显示如下所示:
此时,我们需要重写formatter函数,将data中的数据提取转换成我们需要的数据并返回值,代码如下所示:
javascript
formatter: function (name){
switch (name){
case '1':
return '周一'
case '2':
return '周二'
case '3':
return '周三'
case '4':
return '周四'
case '5':
return '周五'
case '6':
return '周六'
case '7':
return '周日'
}
},
data: ['1', '2', '3', '4', '5', '6', '7']
现在,x轴坐标的值显示如下所示:
7. 设置y轴样式
在McCharts 框架中,可以看到y轴 默认显示在图表的左侧 ,目前还不支持右侧y轴的显示。我们可以使用yAxis 属性来修饰x轴的样式,和xAxis 属性相比,yAxis属性多了如下的配置。
如上图所示,yAxis 属性中可以设置y轴的名称 ,并支持对字体的修改。还有就是在y轴中可以设置分割线的样式,如显示或隐藏y轴的分割线,并且还可以修饰分割线的样式。代码如下所示:
arduino
yAxis: {
axisTick: { //刻度线配置
length: 6, //刻度的长度
lineStyle: { //刻度线样式
color: '#FFFFFF', //线颜色
width: 1 //线宽度
}
},
axisLine: { //y轴线配置
show: false //隐藏y轴线
},
splitLine: { // Y轴分割线配置。
show: true, //显示分割线
lineStyle: { //轴线样式
color: '#D9D9D9', //线颜色
width: 1 //线宽度
}
},
axisLabel: { //y轴文本标签样式配置
color: '#999999', //字体颜色
fontSize: 28, //字体大小
fontWeight: '600' //字体粗细
},
formatter: function (name) { //文本内容自定义函数
return name + '℃'
}
},
运行效果如下图所示:
8. 设置提示层的相关样式与功能
在McCharts框架中,支持对图表的交互操作,如当我们点击折线图中的转折点时会弹出提示层,如下图所示:
可以使用tooltip属性来设置提示层的相关样式与功能,其中包含:提示层的样式、提示层类型、提示线的配置等等,详细的信息如下图所示:
我们可以通过修改tooltip属性中的参数,并对其进行设置。代码如下所示:
go
tooltip: { //设置提示层的相关样式与功能
axisPointer: { //指示器配置项
type: 'line', //指示器类型
lineStyle: { //提示线样式
color: '#D9D9D9', //线颜色
width: 2, //线宽度
type: 'solid' //线类型
}
},
backgroundColor: '#FFFFFF', //提示框背景颜色
borderColor: '#C4C4C4', //提示框边框颜色
borderWidth: 1, //提示框边框宽度
padding: 6, //提示框内边距
textStyle: { //文本样式配置
color: '#666666', //字体颜色
fontSize: 14 //字体大小
}
},
运行效果如下图所示:
总结
本文向您介绍了如何使用McCharts 图表工具库中的折线图,通过McLineChart组件我们可以绘制出自己想要的图表。整个使用过程中操作折线图简洁明了,易于理解,非常适合Harmony OS的开发人员。