图表

系统将 ECharts 封装成图表组件,通过配置数据,设置 option,实现各种图表。下面列举了一些常用的图表。

图表组件

添加组件

从市场添加图表组件,在页面上添加图表组件,绑定图表使用的数据组件

图表设置

通过设置图表类型、设置图表使用的数据列、设置图表样式等完成图表的配置

图表类型

系统提供了多种图表模板,每种模板中定义了相应的 option,如下图所示

特别说明

  • 选择白色字体的图表模板后,必须设置图表父容器的背景色,否则因为字体是白色的,运行时看不到文字

数据设置

数据类型分为:维度、指标、最大值、颜色、X轴、Y轴、信息等。

以柱图为例,维度表示分类(显示在X轴上),指标表示值(显示在Y轴上),指标可以有多个,如下图所示

以饼图为例,维度表示分类,指标表示值,指标只能有一个,如下图所示

以散点图为例,X 轴和 Y 轴表示点的坐标,指标表示点的值,可以转化为点的直径,直观的显示值的大小,信息是点的说明,如下图所示

以雷达图为例,维度表示分类,指标除以最大值表示点的位置,指标可以有多个,指标颜色表示点的颜色,如下图所示

综上所述,不同的图表类型,设置不同的数据类型。数据类型说明见下表

图表类型 数据类型说明
柱状图、折线图、双 Y 轴 必选维度和指标,一个指标对应一个 series,Y 轴序号为空,表示使用左侧 Y 轴,Y 轴序号设置为1,表示使用右侧 Y 轴
饼图、圆环图、漏斗图 必选维度和指标
雷达图 必选维度、指标、最大值、可选颜色,支持设置线型
散点图 必选 X 轴、Y 轴、指标(1个)、可选信息,option 中可使用 data 数组获取列值
仪表盘 必选指标

在数据设置中,选中图表使用的列,并设置数据类型,如下图所示。图表组件就会以这里设置的方式,渲染数据组件中的数据

样式设置

ECharts 提供了大量的配置项,这里只列出了一些图表模板中使用的配置项,可以在这里设置,也可以直接修改 option

自定义 option

ECharts 提供丰富的图表,丰富的展现形式,参考官网示例。这些丰富的样式都是通过配置项实现的,参考官网配置项手册。在 option 中直接编辑配置项即可。例如下图中增加 "stack": "Total" 实现堆叠效果

特别说明

  • option 是 JSON 格式的,添加的代码必须符合 JSON 规范
  • 图表组件使用 ECharts 的数据集单独声明数据,参考官网示例时,注意这个区别

皮肤设置

系统默认提供了4个皮肤,如需定义新的皮肤,需要修改组件。建议在企业门户的主题配置中定义图表的皮肤

图表事件

图表组件提供一个显示前事件,用于修改 option。在事件中,通过 event.detail.option 获取到图表组件生成的 option,提供给开发者修改,修改后赋值给 event.detail.option 即可生效。

在事件中输出 option 的代码如下

    onEcharts0BeforeSetOption = (event) => {
        console.log(event.detail.option);
    }

在控制台中看到输出的 option,如下图所示

柱状图、折线图、双 Y 轴

柱图和线图支持两种数据格式

  • 数据在行上

  • 数据在列上

当数据在行上时,在数据设置中,设置两个维度和一个指标即可,系统会将数据转换成图表需要的数据格式

当数据在列上时,在数据设置中,设置一个维度和多个指标即可

饼图/圆环图

饼图和圆环图的区别在于 option 中半径 radius 的设置,设置一个值表示外半径,显示为饼图,设置一个数组,表示内、外半径,显示为圆环图,如下图所示。

在数据设置中,设置一个维度和一个指标

运行效果如下

散点图

在数据设置中,设置 X 轴、Y 轴、指标、信息,如下图所示

X 轴、Y 轴、指标、信息在数据集中的下标分别是0、1、2、3。

  • option 中的 symbolSize 表示点的大小,data[2]表示指标
  • option 中的 label.formatter 表示文本标签格式,@[3] 表示信息,@[2]表示指标

运行效果如下图所示

雷达图

在数据设置中,设置维度、指标(可多个)、最大值、颜色(可选,可多个),如下图所示

颜色列和指标列需要有名称上的对应关系,指标列为xxx,颜色列为xxxcolor,如下图所示

运行效果如下图所示

散点图模板 option 中定义的 z 等于2和 z 等于3的 series ,如下图所示,这些代码是为了显示彩色点

散点图模板 option 中定义了调色板颜色(两个灰色),如下图所示

去掉调色板颜色后,会以默认的颜色显示,如下图所示

仪表盘

仪表盘只显示一个值,在数据设置中,设置一个指标,如下图所示

仪表盘模板 option 中定义了:最大值、最小值、刻度分隔段数、刻度分段颜色等,如下图所示

数据组件中只有一条记录,运行效果如下图所示。数据组件中有多条记录时,显示第一行数据中的值

漏斗图

漏斗图和饼图展示的数据一样,只是展示方式不同。在数据设置中,设置一个维度和一个指标,如下图所示

运行效果如下图所示

添加 echarts 事件

echarts 图表提供了很多事件,例如单击、图例切换等事件

在 echarts 组件的 echarts 事件属性中定义事件名及方法,格式如下:

react 代码(JSON格式)

    {
        "事件名1": $page.方法名1,
        "事件名2": $page.方法名2
    }

vue 代码(数组格式)

    [['事件名1', 方法名1],['事件名2', 方法名2]]

本例添加单击 click 和图例切换事件 legendselectchanged,事件名称从 echarts 官网获取

设置 echarts 事件属性

在 echarts 组件的 echarts 事件属性中输入下面的代码

react 代码

    {'click':$page.chartClick,'legendselectchanged':$page.legendselectchanged}

vue 代码

    [['click', chartClick],['legendselectchanged', legendselectchanged]]

添加 JS 方法

在 JS 文件中添加 chartClick 和 legendselectchanged 方法,代码如下

react 代码

    chartClick = (params) => {
    }

    legendselectchanged = (params) => {
        // 获取点击图例的选中状态
        let isSelected = params.selected[params.name];
        // 在控制台中打印
        console.log((isSelected ? '选中了' : '取消选中了') + '图例' + params.name);
        // 打印所有图例的状态
        console.log(params.selected);
    }

vue 代码

    let chartClick = (params) => {
        alert("click");
    }

    let legendselectchanged = (params) => {
        // 获取点击图例的选中状态
        let isSelected = params.selected[params.name];
        // 在控制台中打印
        console.log((isSelected ? '选中了' : '取消选中了') + '图例' + params.name);
        // 打印所有图例的状态
        console.log(params.selected);
    }

直接引用 echarts 的 js 库画图表

平台提供的有 echarts 组件已经带了 js 类库,可以从市场中引入 echarts 组件后就可以直接 import 类库直接用原始 echarts 的方式画图

这种方式不需要在页面中放图表组件,可以直接在 js 中给要显示图表的区块画需要的图就可以,具体如下:

js 引入:import * as echarts from "echarts";

react 体系

    //获取页面dom
    let pageRoot = this.getPage().renderRoot;
    //获取要画图标的区块div
    let divChart = pageRoot.querySelector("#div0");
    //初始化echarts
    let myChart = echarts.init(divChart);
    //设置数据
    myChart.setOption(option);

vue 体系

    //获取页面dom
    let pageRoot = $page.getPage().renderRoot;
    //获取要画图标的区块div
    let divChart = pageRoot.querySelector("#div0");
    //初始化echarts
    let myChart = echarts.init(divChart);
    //设置数据
    myChart.setOption(option);

上面的代码中,使用了 querySelector 获取 DOM 元素,建议使用 ref 获取 DOM 元素

results matching ""

    No results matching ""