鸿蒙数据可视化系列之使用McCharts框架绘制折线图

前言

本文主要讲解使用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 类中包含了设置折线图的基本属性,涉及legendtooltipxAxisyAxisseries 等属性。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的开发人员。

相关推荐
zhougl9962 小时前
html处理Base文件流
linux·前端·html
花花鱼2 小时前
node-modules-inspector 可视化node_modules
前端·javascript·vue.js
HBR666_2 小时前
marked库(高效将 Markdown 转换为 HTML 的利器)
前端·markdown
careybobo3 小时前
海康摄像头通过Web插件进行预览播放和控制
前端
杉之5 小时前
常见前端GET请求以及对应的Spring后端接收接口写法
java·前端·后端·spring·vue
喝拿铁写前端5 小时前
字段聚类,到底有什么用?——从系统混乱到结构认知的第一步
前端
再学一点就睡5 小时前
大文件上传之切片上传以及开发全流程之前端篇
前端·javascript
木木黄木木6 小时前
html5炫酷图片悬停效果实现详解
前端·html·html5
请来次降维打击!!!7 小时前
优选算法系列(5.位运算)
java·前端·c++·算法
難釋懷7 小时前
JavaScript基础-移动端常见特效
开发语言·前端·javascript