antv/x6绘图 2.2.1

这篇具有很好参考价值的文章主要介绍了antv/x6绘图 2.2.1。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

网址:https://x6.antv.antgroup.com/
文档:https://x6.antv.antgroup.com/tutorial/about
API:https://x6.antv.antgroup.com/api/graph/graph
praph配置:https://x6.antv.antgroup.com/api/graph/graph#connecting

介绍:X6 是基于 HTML 和 SVG 的图编辑引擎,提供低成本的定制能力和开箱即用的内置扩展,方便我们快速搭建 DAG 图、ER 图、流程图、血缘图等应用
特性
🌱  极易定制:支持使用 SVG/HTML/React/Vue 定制节点样式和交互;
🚀  开箱即用:内置 10+ 图编辑配套扩展,如框选、对齐线、小地图等;
🧲  数据驱动:基于 MVC 架构,用户更加专注于数据逻辑和业务逻辑;
💯  事件驱动:可以监听图表内发生的任何事件。
一、安装

$ npm install @antv/x6 --save
$ yarn add @antv/x6

二、开始使用
1、初始化画布:在页面中创建一个画布容器,然后初始化画布对象,可以通过配置设置画布的样式,比如背景颜色

// 项目中 <div ref="graphStencil" class="graph-stencil" @mouseup.native.stop></div>
<div id="container"></div>
import { Graph } from "@antv/x6";
const graph = new Graph({
  container: document.getElementById("container"),
  width: 800,
  height: 600,
  background: {
    color: "#F2F7FA",
  },
});

2、绘制节点和边
3、使用插件
4、数据导出
三、基础
1、画布
(1)画布大小,可以设置width height,不设置以画布容器大小初始化画布,在项目实践中,经常会遇到下面两种场景:1)画布容器还没有渲染完成(此时尺寸为 0),就实例化画布对象,导致画布元素显示异常。2)页面的 resize 导致画布容器大小改变,导致画布元素显示异常。可以使用 autoResize 配置来解决上述问题。

<div style="width=100%; height=100%">
  <div id="container"></div>
</div>

const graph = new Graph({
  container: document.getElementById("container"),
  autoResize: true,  // 自动调整画布大小
  grid: true, // 使用网格
  mousewheel: {
			enabled: true,  // 是否开启滚轮缩放交互
			zoomAtMousePosition: true,  // 是否将鼠标位置作为中心缩放
			modifiers: 'ctrl', // 修饰键('alt'、'ctrl'、'meta'、'shift'),设置修饰键后需要按下修饰键并滚动鼠标滚轮时才触发画布缩放。通过设置修饰键可以解决默认滚动行为与画布缩放冲突问题
			minScale: 0.5,
			maxScale: 3,
		},
});

(2)画布背景及网格:通过 background 和 grid 两个配置来设置画布的背景以及网格
(3)缩放和平移:panning 和 mousewheel 配置来实现这两个功能,鼠标按下画布后移动时会拖拽画布,滚动鼠标滚轮会缩放画布
2、节点
节点渲染方式:
(1)如果节点内容比较简单,而且需求比较固定,使用 SVG 节点
(2)其他场景,都推荐使用当前项目所使用的框架来渲染节点

添加节点
内置节点
定制节点:通过 markup 和 attrs 来定制节点的形状和样式,markup 可以类比 HTML,attrs 类比 CSS

// 表示包含rect image text 三个 SVG 元素,渲染到页面之后,节点对应的 SVG 元素类似3个标签
markup: [
		{
			tagName: 'rect', // SVG/HTML 元素标签名
			selector: 'body', // 该元素的选择器(唯一),通过选择器来定位该元素或为该元素指定属性样式
		},
		{
			tagName: 'image',
			selector: 'image',
		},
		{
			tagName: 'text',
			selector: 'label',
		},
	],

attrs: {
		body: {
			strokeWidth: 1,
			stroke: '#bababa',
			fill: '#EFF4FF',
		},
		image: {
			width: 18,
			height: 18,
			refX: 6,
			refY: 6,
			color: '#fff',
		},
		label: {
			refX: '50%',
			refY: '50%',
			textAnchor: 'middle',
			textVerticalAnchor: 'middle',
			fontSize: 12,
			fill: '#262626',
		},
	},
	ports: {
		groups: {
			top: {
				position: 'top',
				attrs: {
					circle: {
						r: 4,
						magnet: true,
						stroke: '#5F95FF',
						strokeWidth: 1,
						fill: '#fff',
						style: {
							visibility: 'hidden',
						},
					},
				},
			},
			right: {
				position: 'right',
				attrs: {
					circle: {
						r: 4,
						magnet: true,
						stroke: '#5F95FF',
						strokeWidth: 1,
						fill: '#fff',
						style: {
							visibility: 'hidden',
						},
					},
				},
			},
			bottom: {
				position: 'bottom',
				attrs: {
					circle: {
						r: 4,
						magnet: true,
						stroke: '#5F95FF',
						strokeWidth: 1,
						fill: '#fff',
						style: {
							visibility: 'hidden',
						},
					},
				},
			},
			left: {
				position: 'left',
				attrs: {
					circle: {
						r: 4,
						magnet: true,
						stroke: '#5F95FF',
						strokeWidth: 1,
						fill: '#fff',
						style: {
							visibility: 'hidden',
						},
					},
				},
			},
		},
		items: [
			{
				group: 'top',
			},
			{
				group: 'right',
			},
			{
				group: 'bottom',
			},
			{
				group: 'left',
			},
		],
	},

3、边:router、connector
4、连接:配置 items,items 是一个数组 PortMetadata[],数组的每一项表示一个连接桩(就是可以连接线的圆点) 以上port的配置

5、交互:在画布实例中配置:connecting,在边教程中我们知道,可以在添加边的时候指定 router 和 connector,如果整个画布中大部分边的 router 或者 connector 是一样的,我们可以直接配置在 connecting 中,这样就可以避免在边中重复配置。

connecting: {
			router: {
				name: 'metro',
			},
			connector: {
				name: 'rounded',
				args: {
					radius: 8,
				},
			},
			anchor: 'center',
			connectionPoint: 'anchor',
			allowBlank: false,
			snap: {
				radius: 20,
			},
			createEdge() { // 配置拉出线的样式
				return new Shape.Edge({
					attrs: {
						line: {
							stroke: '#A2B1C3',
							strokeWidth: 2,
							targetMarker: {
								name: 'block',
								width: 12,
								height: 8,
							},
						},
					},
					zIndex: 0,
				});
			},
			validateConnection({ targetMagnet }) {
				return !!targetMagnet;
			},
		},

highlighting: { // 触发某种事件时的高亮样式
			magnetAdsorbed: { //接桩吸附连线时在连接桩外围围渲染一个包围框
				name: 'stroke',
				args: {
					attrs: {
						fill: '#5F95FF',
						stroke: '#5F95FF',
					},
				},
			},
		},

6、
7、
四、文章来源地址https://www.toymoban.com/news/detail-634007.html

到了这里,关于antv/x6绘图 2.2.1的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Vue使用AntV X6绘制流程图(组态呈现)

    先上几个网址 AntV | 蚂蚁数据可视化 AntV X6 图编辑引擎 AntV X6文档 AntV X6 API AntV X6图表示例 上面是一些用到的网址,先说下我项目中的需求,就是要自己绘制出一个我们想要的图,组态化呈现出来,然后这个图中会有很多节点,每个节点都会有自己的状态 ,状态会实时改变,

    2024年02月06日
    浏览(64)
  • 「AntV」X6图编辑器的应用——流程图实现

    在线预览 源码 阮一峰:SVG图像入门 SVGtutorial 因为antv/x6是基于SVG的图编辑器,所以SVG的知识有必要了解下的 简介 可缩放矢量图形【基于图形】 全称:Scalable Vector Graphics 定义基于矢量的图形 基于XML语法 放大缩小不会失真 属于万维网标准 可以插入DOM,通过JavaScript和CSS来操作

    2024年02月09日
    浏览(53)
  • 「AntV」X6开发实践:踩过的坑与解决方案

    长期更新版文档请移步语雀(「AntV」X6开发实践:踩过的坑与解决方案 (yuque.com)) --Recent update:2024-01-05 相信你们在开发中更多的需求是需要自定义拖拽源,毕竟自定义的功能扩展性高一些,而且可以根据你的业务需求灵活设置。自定义拖拽的优点就是:万物皆可成为拖拽源,

    2024年02月08日
    浏览(104)
  • vue3+ts使用antv/x6 + 自定义节点

    使用 2.x 版本 x6.antv 新官网: 项目结构 1、初始化画布 index.vue 2、注册节点 渲染 Vue 节点,这个文档完全够用 节点node.vue 3、在画布引入并注册自定义节点,配置节点信息 主画布:index.vue 展示 小小预告: 下一篇 自定义节点样式 再下一篇 vue3 + antv/x6 实现拖拽侧边栏节点到画布

    2024年02月12日
    浏览(41)
  • 在vue3中浅尝antv X6 2.0 demo(三)

    终于抽空把antv X6 2.0这个版本的demo抽出来了,原以为项目会一直使用vue3去做这个流程,结果最近项目经理说antv X6的菜单功能只有react才能用...然鹅...写到菜单模块的时候,发现都可以用的... 目前我项目里面react版本的多一些功能(如:新增节点时自动布局、右键菜单,如图)

    2024年02月05日
    浏览(36)
  • 创建可交互的图表:AntV X6实现预留空白位置、拖拽吸附与信息修改弹框

    首先用AntV X6官网的一句简介了解一下什么是X6 X6 是基于 HTML 和 SVG 的图编辑引擎,提供低成本的定制能力和开箱即用的内置扩展,方便我们快速搭建 DAG 图、ER 图、流程图、血缘图等应用。 知道了X6是什么,那么我们就要开始使用了 首先得确定框架,其次就要安装X6 由于项目

    2024年02月16日
    浏览(36)
  • JavaScript与前端框架Element UI

    一、JavaScript概述 JavaScript(简称JS)是一种轻量级、解释性的、基于对象的脚本语言,用于Web开发中的客户端脚本。它是HTML和CSS的一部分,用于在浏览器中实现动态交互。 JavaScript最初由Netscape公司的Brendan Eich于1995年开发,旨在为网页添加动态内容。不同于编译型语言如Java和

    2024年04月29日
    浏览(41)
  • Python Matplotlib数据可视化绘图之(六)————图片大小、颜色、标题、纵横坐标、画布和绘图区域背景颜色、Legend(图例)等的参数设置详解

    前面五期的文章详细讲述了Python Matplotlib数据可视化绘图的方法技巧,主要涉及柱状图(《Python Matplotlib数据可视化绘图之(一)————柱状图》)、箱线图(《Python Matplotlib数据可视化绘图之(二)————箱线图》)、散点图(《Python Matplotlib数据可视化绘图之(三)—

    2024年02月06日
    浏览(80)
  • 前端基础3——JavaScript基础用法

    JavaScript(简称JS):是一种轻量级客户端脚本语言,通常被直接嵌入HTML 页面,在浏览器上执行。 JavaScript作用:改变页面中的HTML元素、属性、样式、事件。 内嵌样式,在body标签中使用。 1.在body标签中写js脚本。 2.查看效果。 在head标签中使用。 1.编写js脚本main.js,统一存放

    2024年02月10日
    浏览(47)
  • 前端基础之JavaScript

    JavaScript书写 JavaScript标签内写代码 引入其他js文件 语言规范 注释: 结束符: 在JavaScript中,结束符以;分好表示 变量声明: 1. 在JavaScript中,变量的命名以:数字,字母,_,$组成,不能以数字开头。 2.声明变量时,使用var 变量名来声明 注意事项:变量名的命名规范使用驼峰

    2024年02月06日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包