IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> 大数据echarts折线图打标 -> 正文阅读

[JavaScript知识库]大数据echarts折线图打标

需求

对折线图打标,echarts没有打标的组件,所以采用brush刷取代替打标部分。可以做到效果,但是不能完全达到想要的,妥协后还是可以用的。

打标:在折线图中选择部分,对该部分人工标记名称。之后即可把标记的部分作为大数据训练集训练。

方案

echarts的刷取,可以多选,首先默认设置多选刷取,其二,默认刷选,其三对每一块区域进行标识。

详细

1.默认可多刷模式设置,默认刷选模式

这个功能本来是echarts右上角tools配置中的一项,但是需要手动点击才可以。现在不允许用户变成单个的,所以要隐藏图标,而且还要有他的功能。

  this.$nextTick(() => {
      this.markLineInstance.chart.dispatchAction({
        // 刷选模式的开关。使用此 action 可将当前鼠标变为可刷选状态。 事实上,点击 toolbox 中的 brush 按钮时,就是通过这个 action,将当前普通鼠标变为刷选器的。
        type: "takeGlobalCursor",
        // 如果想变为“可刷选状态”,必须设置。不设置则会关闭“可刷选状态”。
        key: "brush",
        brushOption: {
          // 参见 brush 组件的 brushType。如果设置为 false 则关闭“可刷选状态”。
          brushType: "rect",
          // 参见 brush 组件的 brushMode。如果不设置,则取 brush 组件的 brushMode 设置。
          brushMode: "multiple",
        },
      });
    });

以上代码可以直接将echarts的模式设置成多选的刷取模式。

至于为啥用nextTick,当然是在echart画图完成后才能获取到实例。

2.对刷取的每一个区域标识

echart自身是不分辨每个刷取的区域的,每个区域都存放在一个数组中。后续发现,每次新增的区域都在数组的最后,而更新之前的区域,他的位置并不会发生改变,无奈只能用index去标识唯一区域,同步维护一个名称数组,用于标识该区域自定义名称。通过index联系起来即可。同步增伤改即可。

  brushHandler(e: any) {
    console.log(e.areas);
    if (this.currIndex != -1) {
      this.boxList[this.currIndex]["area"] = e.areas[0].coordRange;
      return;
    }
    e.areas.forEach((item: any, index: number) => {
      if (!this.boxList[index]) {
        this.boxList.push({
          tagName: "默认名称",
          tagId: +new Date(),
          area: item.coordRange,
        });
      } else {
        this.boxList[index]["area"] = item.coordRange;
      }
    });
  }

这是刷取事件,每次刷取,都会返回一个areas的一个数组保存所有的区域。每次刷取区域变化就更新数组,如果存在就更新坐标。如果不存在就新镇一个,新增的时候加上默认名称,id等等,这个是为了后续维护用的。这里包含了 新增和更新

删除的话我放在一个维护显示的表格中,不在图表上,在表格中点击删除,来改变图表的区域,代码如下

  deleteArea(tagId: string) {
    let index = this.boxList.findIndex((item: any) => {
      return item["tagId"] == tagId;
    });
    this.boxList.splice(index, 1);
    this.changeAreas(this.boxList);
  }
  changeAreas(areasArray: Array<object>) {
    let showArry: Array<object> = [];
    areasArray.forEach((item) => {
      showArry.push({
        xAxisIndex: 0,
        yAxisIndex: 0,
        brushType: "rect",
        coordRange: item["area"],
      });
    });
    this.markLineInstance.chart.dispatchAction({
      type: "brush",
      areas: showArry,
    });
  }

通过id找到要删除的index,通过index删除areas中的列表,并应用到echarts上,实现删除。

这是打标后的效果,这是调研版本的代码,正式环境的功能不便展示,用vue写也更方便

以上就是折线图打标所有功能。又不太清除的地方,烦请指出?

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2022-05-12 16:23:29  更:2022-05-12 16:25:44 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 19:49:44-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码