AntV - F6 小程序移动端图表组件(微信版)

news/2024/11/30 10:46:57/

AntV 蚂蚁新出的可视化组件,分为很多部分 官网
F6 文档链接

  1. 安装 npm install --save @antv/f6-wx
  2. 微信开发工具 - 工具 - 构建npm
  3. 组件使用 分为图配置 / 树图配置

4. 图配置

wxml
<view><f6-canvaswidth="{{canvasWidth}}"height="{{canvasHeight}}"pixelRatio="{{pixelRatio}}"bind:onInit="handleCanvasInit"bind:onTouchEvent="handleTouch"/>
</view>
json
{"usingComponents": {"f6-canvas": "@antv/f6-wx/canvas/canvas"}
}
js
import F6 from '@antv/f6-wx';
import force from '@antv/f6-wx/extends/layout/forceLayout';/*** 基本力导向布局及节点拖拽*/Page({canvas: null,ctx: null,renderer: '', // mini、mini-native等,F6需要,标记环境graph: null,data: {width: 375,height: 600,pixelRatio: 1,forceMini: false,},onLoad() {F6.registerLayout('force', force);// 同步获取window的宽高const { windowWidth, windowHeight, pixelRatio } = wx.getSystemInfoSync();this.setData({canvasWidth: windowWidth,canvasHeight: windowHeight,pixelRatio,});},/*** 初始化cnavas回调,缓存获得的context* @param {*} ctx 绘图context* @param {*} rect 宽高信息* @param {*} canvas canvas对象,在render为mini时为null* @param {*} renderer 使用canvas 1.0还是canvas 2.0,mini | mini-native*/handleCanvasInit(event) {const { ctx, canvas, renderer } = event.detail;this.isCanvasInit = true;this.ctx = ctx;this.renderer = renderer;this.canvas = canvas;this.updateChart();},/*** canvas派发的事件,转派给graph实例*/handleTouch(e) {this.graph && this.graph.emitEvent(e.detail);},updateChart() {const { canvasWidth, canvasHeight, pixelRatio } = this.data;const data = {nodes: [{ id: 'node0', size: 50 },{ id: 'node1', size: 30 },{ id: 'node2', size: 30 },{ id: 'node3', size: 30 },{ id: 'node4', size: 30, isLeaf: true },{ id: 'node5', size: 30, isLeaf: true },{ id: 'node6', size: 15, isLeaf: true },{ id: 'node7', size: 15, isLeaf: true },{ id: 'node8', size: 15, isLeaf: true },{ id: 'node9', size: 15, isLeaf: true },{ id: 'node10', size: 15, isLeaf: true },{ id: 'node11', size: 15, isLeaf: true },{ id: 'node12', size: 15, isLeaf: true },{ id: 'node13', size: 15, isLeaf: true },{ id: 'node14', size: 15, isLeaf: true },{ id: 'node15', size: 15, isLeaf: true },{ id: 'node16', size: 15, isLeaf: true },],edges: [{ source: 'node0', target: 'node1', id: 'edge0' },{ source: 'node0', target: 'node2', id: 'edge1' },{ source: 'node0', target: 'node3', id: 'edge2' },{ source: 'node0', target: 'node4', id: 'edge3' },{ source: 'node0', target: 'node5', id: 'edge4' },{ source: 'node1', target: 'node6', id: 'edge5' },{ source: 'node1', target: 'node7', id: 'edge6' },{ source: 'node2', target: 'node8', id: 'edge7' },{ source: 'node2', target: 'node9', id: 'edge8' },{ source: 'node2', target: 'node10', id: 'edge9' },{ source: 'node2', target: 'node11', id: 'edge10' },{ source: 'node2', target: 'node12', id: 'edge11' },{ source: 'node2', target: 'node13', id: 'edge12' },{ source: 'node3', target: 'node14', id: 'edge13' },{ source: 'node3', target: 'node15', id: 'edge14' },{ source: 'node3', target: 'node16', id: 'edge15' },],};// 创建F6实例this.graph = new F6.Graph({container: this.canvas,context: this.ctx,renderer: this.renderer,width: canvasWidth,height: canvasHeight,pixelRatio,modes: {default: ['drag-canvas', 'drag-node', 'zoom-canvas'],},layout: {type: 'force',},defaultNode: {size: 15,},});// 注册数据this.graph.data(data);this.graph.render();this.graph.fitView();},onUnload() {this.graph && this.graph.destroy();},
});

5. 树图配置

<button bindtap="setTreeData">控制</button><f6-canvaswidth="{{canvasWidth}}"height="{{canvasHeight}}"pixelRatio="{{pixelRatio}}"bind:onInit="handleCanvasInit"bind:onTouchEvent="handleTouch"/>
</view>
import F6 from '@antv/f6-wx';
import force from '@antv/f6-wx/extends/layout/forceLayout';
import TreeGraph from '@antv/f6-wx/extends/graph/treeGraph';const data123 = {id: 'K01215 项目成功标准',children: [{id: '相关方可能有不同看法,主要相关方和项目经理达成共识并予以记录',},{id: '财务测量指标',children: [{id: 'NPV:项目预期的累计投入和累计利润折算成现值,以计算项目预期净货币收益与损失;>=0可行,<0 不可行,越大越好; 折现率:考虑利率、通货膨胀确定的利率',},{id: 'ROI:投资回报率=纯利润/投资总额*100%;考虑时间价值ROI=NPV/投资折现总额*100%;越大越好',},{id: 'IRR:内部报酬率,净现金流量为0的折现率,越大越好',},],}],
};    
Page({canvas: null,ctx: null,renderer: '', // mini、mini-native等,F6需要,标记环境graph: null,data: {width: 375,height: 600,pixelRatio: 1,forceMini: false,},onLoad() {F6.registerLayout('force', force);F6.registerGraph('TreeGraph', TreeGraph);// 同步获取window的宽高const { windowWidth, windowHeight, pixelRatio } = wx.getSystemInfoSync();this.setData({canvasWidth: windowWidth,canvasHeight: windowHeight,pixelRatio,});},handleCanvasInit(event) {const { ctx, canvas, renderer } = event.detail;this.isCanvasInit = true;this.ctx = ctx;this.renderer = renderer;this.canvas = canvas;this.updateChart();},/*** canvas派发的事件,转派给graph实例*/handleTouch(e) {this.graph && this.graph.emitEvent(e.detail);},updateChart() {const { width, height, pixelRatio } = this.data;this.graph = new F6.TreeGraph({context: this.ctx,renderer: this.renderer,width,height,pixelRatio,fitView: true,modes: {default: [{type: 'collapse-expand',onChange: function onChange(item, collapsed) {const model = item.getModel();model.collapsed = collapsed;return true;},},'drag-canvas','zoom-canvas',],},defaultNode: {size: 26,anchorPoints: [[0, 0.5],[1, 0.5],],},defaultEdge: {type: 'cubic-horizontal',},layout: {type: 'dendrogram',direction: 'LR',nodeSep: 30,rankSep: 100,getId: function getId(d) {return d.id;},getHeight: function getHeight() {return 16;},getWidth: function getWidth() {return 16;},getVGap: function getVGap() {return 10;},getHGap: function getHGap() {return 100;},},});this.graph.node(function(node) {return {label: node.id,labelCfg: {offset: 5,position: node.children && node.children.length > 0 ? 'left' : 'right',},};});},setTreeData(){// 注册数据this.graph.data(data123);this.graph.render();this.graph.fitView();},onUnload() {this.graph && this.graph.destroy();},
});

http://www.ppmy.cn/news/674601.html

相关文章

微信7.0版本服务器,微信7.0版本官方版

微信7.0版本官方版可以给喜欢用微信聊天的用户能够随时使用微信聊天&#xff0c;在微信7.0版本上面&#xff0c;想要怎么发表情发微信都可以&#xff0c;大家可以跟自己的微信好友通话语音视频&#xff0c;还能利用微信支付扫码等 微信7.0版本官方版相关问题 1、黑名单删除/移除…

微信 for android,微信WeChat v8.0.6 for Android 官方正式版

微信十周年之际&#xff0c;微信 WeChat 8.0.0 for Android 正式版发布&#xff0c;安卓微信8.0版本带来了一大波功能&#xff0c;例如&#xff1a;炸弹刷屏、全新动态表情、个人状态、好友封面、浮窗功能改版、好友上限提升至1万人等主要功能。 新版特性 v8.0.3 – 微信群新增…

ChatGPT有长期记忆了/ “微信版知乎”推出在即/ 高盛预测全球3亿岗位被AI取代…今日更多新鲜事在此...

日报君 发自 凹非寺量子位 | 公众号 QbitAI 大家好&#xff0c;今天是3月29日&#xff0c;周三。 量子位主办的中国AIGC产业峰会&#xff0c;圆满结束。 今天的日报君&#xff0c;来晚了一些&#xff0c;不过内容依然精彩。 孟晚舟4月1日起当值华为轮值董事长 经济观察网获悉&a…

在uniapp中使用VantUI组件库(微信版)

在uniapp中使用VantUI微信版UI库 1、安装和引入2、使用 1、安装和引入 在根目录下创建wxcomponents/vant目录,并在https://github.com/youzan/vant-weapp下载最新的zip压缩包&#xff0c;解压放入 在App.vue中引入UI样式 import "/wxcomponents/vant/dist/common/index.…

Flink stop 和 cancel停止 job 的区别

Flink 停止 job 的方式&#xff08;stop 和 cancel&#xff09; 1.Stop 方式 后边跟的任务id 是flink的任务ID&#xff0c;不是yarn的 flink stop -m 127.0.0.1:8081 357591171dfcca2eea09de 注&#xff1a;stop方式停止任务对 source 有要求&#xff0c;source必须实现了S…

基于智能分析网关的小区电动车AI检测方案设计与应用

随着人工智能技术的不断成熟与落地&#xff0c;各行各业也逐渐融入AI智能检测技术&#xff0c;尤其是在视频监控领域&#xff0c;通过AI视频智能检测与分析&#xff0c;可以大大提高视频的自动化、智能化监控能力。比如在小区的管理中&#xff0c;由电动车上楼入户引发的电梯、…

自行车

今天早上起来推自行车&#xff0c;听见边上一个女的在打电话&#xff0c;说电动车被偷了。 住的小区真不安全啊。 上班到大楼&#xff0c;忘记把自行车座拿下来了。有点担忧啊。

电动车+自行车+VOC格式直接训练

本数据集用于电梯禁入电动车项目的目标检测算法模型训练任务 共有两万多张图片&#xff0c;其中电梯轿厢内电动车有7000张&#xff0c;室外场景电动车有13000张。以上图片均一一手工标注&#xff0c;标签格式为VOC格式。 共有人、电动车、自行车三种检测目标。 该数据集训练…