深入解析思维导图及用f6在小程序中绘制思维导图的方法

2025-07-01
来源:万象资讯

思维导图究竟是什么?如何在微信小程序中创建它?本文将详细阐述如何运用f6工具在微信小程序中制作思维导图,期待对各位读者有所裨益!

思维导图,亦称脑图、心智地图、头脑风暴图、心智图、灵感触发图、概念地图或思维地图,本质上是一种以图像形式组织信息的图表。它通过一个核心关键词或观念,以放射状线条将所有相关的词汇、观念、任务或其他关联内容连接起来。它能够通过多样化的手法来展现人们的思维,包括但不限于命题式、直观形象化、构建体系以及分类法等。《维基百科》中广泛运用这些方法,它们在研究、管理、解决难题以及政策制定等领域发挥着重要作用。

托尼·博赞,这位英国的专家,在1970年代提出了思维导图这一辅助思考的工具。它以目标主题为核心节点,向外不断扩展,建立联系,同时进行分解和深入探究,最终构建起一张完整的树状结构图。从具体操作的角度来看,思维导图可视化了探索的过程,详尽地记录了每一次关联的成果。这种结构更贴近人们的思维习惯,而且最终的图像也让我们对主题有了更深刻的感知和全面的认识。

思维导图之所以应用范围极广,是因为它侧重于思维过程,而我们的日常行为无不与思考紧密相连。无论是进行总结归纳、报告展示还是头脑风暴,思维导图都能发挥重要作用。制作过程中,简单的纸笔便足够使用,同时还有众多在线和独立的应用软件可供选择,以支持思维导图的绘制。当我们的产品需要呈现围绕某一主题的多层次关联信息时,思维导图便成为了一种理想的选择。F6在微信小程序中绘制思维导图十分便捷,正如图中所示,具备此类需求的同学不妨尝试一下。此外,我们还推荐相关的小程序开发学习资源。【学习资源推荐:小程序开发教程】

F6中如何绘制

本节示例代码位于f6.antv./zh/docs/exa…地址,现已对外公布,如感兴趣,欢迎查阅。

支付宝中

首先安装

data.js

export default {   id: 'Modeling Methods',   children: [     {       id: 'Classification',       children: [         { 标识为:'逻辑回归'。         },         { 线性判别分析,标识符为:'Linear Discriminant Analysis'。         },         {           id: 'Rules',         },         { 标识为“决策树”。         },         {           id: 'Naive Bayes',         },         { 识别码:'K最近邻'算法         },         { 标识:概率神经网络         },         { 标识符为“支持向量机”。         },       ],     },     {       id: 'Consensus',       children: [         { 编号:'模型多样性'           children: [             { 标识:不同初始化方式,             },             { 该标识符表示:参数选择存在差异。             },             { 标识:不同架构             },             { 编号:'多样化的建模方式'             },             { 标识为“不同的训练集”。             },             { 标识符为“具有不同特性集合”。             },           ],         },         {           id: 'Methods',           children: [             { 分类器选择标识:             },             { 该分类器融合技术标识为:Classifier fusion。             },           ],         },         {           id: 'Common',           children: [             {               id: 'Bagging',             },             {               id: 'Boosting',             },             {               id: 'AdaBoost',             },           ],         },       ],     },     {       id: 'Regression',       children: [         { 编号:'多元线性回归'         },         { 该方法的标识为:部分最小二乘法。         },         { 编号:多层前馈神经网络         },         {

思维导图绘制方法_F6小程序绘制思维导图教程_小程序开发思维导图pdf

该网络模型标识为:通用回归神经网络。         },         { 标识符为“支持向量回归”。         },       ],     },   ], };

.json

{   "defaultTitle": "mindMap",   "usingComponents": { "f6-canvas"这一组件,其依赖项为"@antv/f6-alipay/es/container/container"。   } }

.js

import F6 from '@antv/f6'; 引入TreeGraph模块,该模块源自'@antv/f6/dist/extends/graph/treeGraph'路径。 引入wrapContext函数,该函数来源于'../../../common/utils/context'路径下的模块。 import data from './data'; /**  * 脑图-自节点自动两侧分布  */ Page({   canvas: null,   ctx: null, renderer:空字符串,代表mini、mini-native等类型,F6功能所必需,用于标识当前运行环境 isCanvasInit未为真,表示canvas尚未完成初始化。   graph: null,   data: {     width: 375,     height: 600,     pixelRatio: 2,     forceMini: false,   },   onLoad() {     // 注册自定义树,节点等 F6对'TreeGraph'进行注册,注册对象为TreeGraph。     // 同步获取window的宽高 通过调用my.getSystemInfoSync()方法,成功获取了系统的窗口宽度、窗口高度以及像素比,分别为windowWidth、windowHeight和pixelRatio。     this.setData({       width: windowWidth,       height: windowHeight,       pixelRatio,     });   },   /**    * 初始化cnavas回调,缓存获得的context    * @param {*} ctx 绘图context    * @param {*} rect 宽高信息 本参数为canvas图形对象,当render模式设置为mini时,该对象可能为空。    */ 在函数体内执行初始化操作,对上下文进行操作,设定矩形区域,绘制到画布上,并使用渲染器。     this.isCanvasInit = true; 此上下文对象等于对原上下文对象进行封装后的结果。     this.renderer = renderer;     this.canvas = canvas;     this.updateChart();   },   /**    * canvas派发的事件,转派给graph实例    */   handleTouch(e) { 若存在此图,则执行此图的事件发射操作。   },   updateChart() { 从this.data对象中解构出width、height和pixelRatio三个属性。     // 创建F6实例 此图结构对象=newF6的树形图实例,配置为{       context: this.ctx, 渲染器:本对象的renderer属性,即this.renderer。       width,       height,       pixelRatio,       fitView: true,       modes: {         default: [           { 类型设定为:折叠展开式设计。 当发生改变时,执行一个函数,该函数接收两个参数:一个是项目信息,另一个是折叠状态。 item对象调用了getModel方法,从而获取了相应的model。 模型对象的状态设置为已折叠;模型对象的折叠属性被设定为折叠模式。               return true;             },           },           'drag-canvas',           'zoom-canvas',         ],       },       defaultNode: {         size: 26,         anchorPoints: [           [0, 0.5],           [1, 0.5],         ],       },       defaultEdge: { 类型设定为:'水平立方型'。       },       layout: {         type: 'mindmap',         direction: 'H', 定义方法:getHeight,方法名为getHeight,实现获取高度的函数。           return 16;         }, 定义一个名为getWidth的函数,该函数没有参数。           return 16;         }, 定义函数getVGap,该函数无参数。           return 10;         }, 定义一个名为getHGap的函数,该函数用于获取水平间距。           return 50;         },       },     });     let centerX = 0; 在绘制图形时,通过该函数对图中的节点进行操作:this.graph.node(nodeFunction)。 若节点标识符等于“建模方法”,则{         centerX = node.x;       } 在设置position的值时(考虑到ESlint对嵌套的三元表达式的限制,因此将其独立出来进行书写), 设定变量position_value的值为空。 若节点存在子节点,并且子节点数量超过零,则执行。 position_value设定为'left'; 若节点x坐标大于中心点x坐标,则将位置值设为“右侧”。 否则,设定position_value的值为'left'。       return {         label: node.id,         labelCfg: {           offset: 5, 设定:位置值为position_value,         },       };     });     this.graph.data(data);     this.graph.render();     this.graph.fitView();   }, });

.axml

微信中

首先安装

npm install @antv/f6-wx -S

鉴于微信对npm包的支持有限,我们特别拆分了@antv/f6-wx,旨在为用户提供操作上的便捷。

data.js同上

.json

{   "defaultTitle": "脑图",   "usingComponents": { "该配置项f6-canvas对应的是@antv/f6-wx/canvas/canvas模块。"   } }

.wxml

.js

import F6 from '@antv/f6-wx'; 引入TreeGraph模块,源自于'@antv/f6-wx/extends/graph/treeGraph'。 import data from './data'; /**  * 脑图-自节点自动两侧分布  */ Page({   canvas: null,   ctx: null,   renderer: '', // mini、mini-native等,F6需要,标记环境   isCanvasInit: false, // canvas是否准备好了   graph: null,   data: {     width: 375,     height: 600,     pixelRatio: 1,     forceMini: false,   },   onLoad() {     // 注册自定义树,节点等     F6.registerGraph('TreeGraph', TreeGraph);     // 同步获取window的宽高 通过调用wx.getSystemInfoSync()函数,成功获取了当前窗口的宽度、高度以及像素密度,分别赋值给windowWidth、windowHeight和pixelRatio这三个变量。     this.setData({       width: windowWidth,       height: windowHeight,       // pixelRatio,     });   },   /**

F6小程序绘制思维导图教程_小程序开发思维导图pdf_思维导图绘制方法

   * 初始化cnavas回调,缓存获得的context    * @param {*} ctx 绘图context    * @param {*} rect 宽高信息    * @param {*} canvas canvas对象,在render为mini时为null    * @param {*} renderer 使用canvas 1.0还是canvas 2.0,mini | mini-native    */   handleInit(event) { 从事件详情中提取出ctx、rect、canvas和renderer这四个对象。     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;     // 创建F6实例     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: 'mindmap',         direction: 'H',         getHeight: function getHeight() {           return 16;         },         getWidth: function getWidth() {           return 16;         },         getVGap: function getVGap() {           return 10;         },         getHGap: function getHGap() {           return 50;         },       },     });     let centerX = 0;     this.graph.node(function(node) {       if (node.id === 'Modeling Methods') {         centerX = node.x;       }       // position的取值(由于ESlint禁止嵌套的三元表达,所以单独提取出来写)       let position_value = null;       if (node.children && node.children.length > 0) {         position_value = 'left';       } else if (node.x > centerX) position_value = 'right';       else position_value = 'left';       return {         label: node.id,         labelCfg: {           offset: 5,           position: position_value,         },       };     });     this.graph.data(data);     this.graph.render();     this.graph.fitView();   }, });

欢迎讨论

如果您对思维导图或图形化展示感兴趣,欢迎添加我的微信,进而加入我们的微信群进行交流讨论。

分享