G2Plot图表库——桑基图开发

最近在产品上有一个需求需要用到桑基图进行实现,在ECharts上稍微找了一下感觉都不太美观,于是找到了G2Plot这个库进行实现

1、G2Plot

这个库是antv(ant-design的可视化库)的一个产品,也有React和Vue3的版本,由于项目上用的是vue2,所以这边选择的是一个vue2的版本。 官网:g2plot.antv.antgroup.com/

2、桑基图

图表的效果基本如上,我这边实现的主要是一个企业迁入/迁出的数据展示,所以这个图表基本也能满足需求实现

3、代码实现

js 复制代码
      <div id="sankey" style="width: 1082px; height: 469px; margin-top: 23px"></div>

正常建一个容器用于图表的渲染,这一块跟Echart基本比较相似,使用canvas进行渲染

js 复制代码
 init() {
      this.sankey = new Sankey("sankey", {
        data: this.data, //数据
        sourceField: "source",
        targetField: "target",
        weightField: "value",
        color: this.randomColors, //一个颜色数组,可删除
        nodeWidthRatio: 0.008,
        nodePaddingRatio: 0.03,
        interactions: [{ type: "element-active" }],
        labels: (node) => {
          return node.name;
        },

        // 支持节点排序,降序
        nodeSort: (a, b) => b.value - a.value,
        // 支持边排序,降序
        // linkSort: (a, b) => b.value - a.value,
      });

      this.sankey.render();
      this.sankey.on("element:click", (...args) => {
        // 区分点击线还是点看data.isNode
        console.log(args);
        this.handleDrawer(args[0].data);
      });

    },

初始化方法如上,data处是你要渲染的数据,color这里根据UI需求我这边定义了一个颜色数组,只用我们产品主题的一些颜色,这样风格会更统一一些,排序方法则是对节点进行从大到小排序,然后还构造了一些点击方法进行图表交互的实现。 具体的参数内容可以参考官方API文档:g2plot.antv.antgroup.com/api/plot-ap...

相关推荐
带娃的IT创业者5 小时前
TypeScript + React + Ant Design 前端架构入门:搭建一个 Flask 个人博客前端
前端·react.js·typescript
非凡ghost6 小时前
MPC-BE视频播放器(强大视频播放器) 中文绿色版
前端·windows·音视频·软件需求
Stanford_11066 小时前
React前端框架有哪些?
前端·微信小程序·前端框架·微信公众平台·twitter·微信开放平台
洛可可白6 小时前
把 Vue2 项目“黑盒”嵌进 Vue3:qiankun 微前端实战笔记
前端·vue.js·笔记
学习同学7 小时前
从0到1制作一个go语言游戏服务器(二)web服务搭建
服务器·前端·golang
-D调定义之崽崽7 小时前
【初学】调试 MCP Server
前端·mcp
四月_h7 小时前
vue2动态实现多Y轴echarts图表,及节点点击事件
前端·javascript·vue.js·echarts
文心快码BaiduComate7 小时前
用Zulu轻松搭建国庆旅行4行诗网站
前端·javascript·后端
行者..................9 小时前
手动编译 OpenCV 4.1.0 源码,生成 ARM64 动态库 (.so),然后在 Petalinux 中打包使用。
前端·webpack·node.js
小爱同学_9 小时前
一次面试让我重新认识了 Cursor
前端·面试·程序员