GoJs连线绘图模板Link使用示例详解

目录
  • 前言
  • go.link的简单使用
  • go.Link的属性配置
    • routing属性
    • curve属性
  • corner、toEndSegmentLength、fromEndSegmentLength、fromShortLength、toShortLength属性
    • selectable、fromSpot、toSpot属性
  • 总结

前言

可视化图形中除了携带很多信息的节点(node)之外,还需要知道他们之间的关系,而链接他们之间的连线在gojs中是使用go.link进行绘制。在渲染的时候我们根据数据的fromto会默认渲染 连线,而如果需要自定义连线的样式和线上的文字描述,就需要进行自定义了。可以直接对go.js的实例linkTemplate进行配置。

go.link的简单使用

//data
nodes: [
      {
        key: "1",
        text: "三国人物志",
      },
      {
        key: "1-1",
        text: "曹丕",
      },
      {
        key: "1-2",
        text: "刘备",
      },
      {
        key: "1-3",
        text: "孙权",
      },
    ],
    links: [
      {
        from: "1",
        to: "1-1",
      },
      {
        from: "1",
        to: "1-2",
      },
      {
        from: "1",
        to: "1-3",
      },
    ],
    //methods
    this.myDiagram = $$(go.Diagram, "myDiagramDiv", {layout: $$(go.TreeLayout)});
    this.myDiagram.nodeTemplate = $$(
      go.Node,
      "Horizontal",
      $$(go.TextBlock,{background:"#67B73C"},new go.Binding("text", "text")),
    );
    this.myDiagram.linkTemplate = $$(
        go.Link,$$(go.Shape,{stroke: "#00FFCC"})
    );
    this.myDiagram.model = new go.GraphLinksModel(this.nodes, this.links);

这样就可以对连线的颜色进行了一个简单的修改

go.Link的属性配置

{
    routing: go.Link.Orthogonal, // 设置连线和节点不重叠
    curve: go.Link.JumpGap, // 设置交叉线的交叉部分的处理方式
    corner: 3, // 连线拐角处的弧度
    toEndSegmentLength: 30, //设置连线拐点到目标节点的距离
    fromEndSegmentLength: 30, //设置起始点到连线拐点的距离
    fromShortLength:3, //设置连线的起始点到起始端口的距离
    toShortLength:3, //设置连线的结尾处到目标节点端口的距离
    selectable: false, //设置连线是否可以选择
    fromSpot: go.Spot.LeftRightSides, //设置连线出发点的端口
    toSpot: go.Spot.LeftRightSides, //设置连线终点的端口
},

routing属性

routing属性是设置连线过程中是否避开路径上的节点,示例中分别采用三种属性配置进行显示

//data
nodes: [
  {
    key: "1",
    text: "三国人物志",
  },
  {
    key: "1-1",
    text: "曹丕",
  },
  {
    key: "1-1-1",
    text: "曹叡",
  },
  {
    key: "1-2",
    text: "刘备",
  },
  {
    key: "1-2-1",
    text: "刘禅",
  },
  {
    key: "1-3",
    text: "孙权",
  },
  {
    key: "1-3-1",
    text: "孙亮",
  },
],
links: [
  {
    from: "1",
    to: "1-1",
    routing: go.Link.AvoidsNodes,
    text:'AvoidsNodes'
  },
  {
    from: "1",
    to: "1-1-1",
    routing: go.Link.AvoidsNodes,
    text:'AvoidsNodes'
  },
  {
    from: "1-1",
    to: "1-1-1",
    routing: go.Link.AvoidsNodes,
    text:'AvoidsNodes'
  },
  {
    from: "1",
    to: "1-2",
    routing: go.Link.Orthogonal,
    text:'Orthogonal'
  },
  {
    from: "1",
    to: "1-2-1",
    routing: go.Link.Orthogonal,
    text:'Orthogonal'
  },
  {
    from: "1-2",
    to: "1-2-1",
    routing: go.Link.Orthogonal,
    text:'Orthogonal'
  },
  {
    from: "1",
    to: "1-3",
    routing: go.Link.Normal,
    text:'Normal'
  },
  {
    from: "1",
    to: "1-3-1",
    routing: go.Link.Normal,
    text:'Normal'
  },
  {
    from: "1-3",
    to: "1-3-1",
    routing: go.Link.Normal,
    text:'Normal'
  },
],

可以看出设置routing属性为go.Link.Normal则是正常避开。go.Link.Orthogonal则是穿过节点。go.Link.AvoidsNodes也是会避开穿过节点,但是其显示和go.Link.Normal显示不同。go.Link.AvoidsNodes的计算算法更为复杂,其可以穿过很多节点的的复杂布局判断,但是特别消耗性能,如果是老旧设备可以不考虑这种属性配置。

curve属性

curve属性是交叉线时的数据显示情况,其属性有四个值分别是go.Link.Nothinggo.Link.Beziergo.Link.JumpGapgo.Link.JumpOver,数据和上方类似,更改属性后go.Link.Nothinggo.Link.Bezier显示内容分别如下

go.Link.JumpGap显示是这样的

go.Link.JumpOver显示是这样的

corner、toEndSegmentLength、fromEndSegmentLength、fromShortLength、toShortLength属性

corner属性为拐角处的圆角,toEndSegmentLength则是设置连线拐点到目标节点的距离,fromEndSegmentLength是设置起始点到连线拐点的距离,fromShortLength是设置连线的起始点到起始端口的距离,toShortLength是设置连线的结尾处到目标节点端口的距离。

未设置属性之前的图形如下

设置属性如下

{
    corner: 10,
    toEndSegmentLength: 100,
    fromEndSegmentLength: 100,
    fromShortLength:5,
    toShortLength:5
}

其显示内容如下

对比可以看出对应的设置的属性的作用

selectable、fromSpot、toSpot属性

selectable属性是设置是否可以选择连线是否可以选择。其选中效果为中间那条线的效果,如果设置为false。则不能选择,也就不能通过选中获取到link的数据。fromSpot属性则是设置其实节点的端口,下面例子中则是选择为左边,以方便对默认做一个区分。toSpot属性则是目标节点的连线端口,为了区分设置为右侧。

{
  routing: go.Link.Orthogonal,
  fromSpot: go.Spot.Left,
  toSpot: go.Spot.Right
}

总结

go.link的配置主要是为了丰富图形中节点之间的关系的显示,以及复杂关系中交叉的样式,使图形中节点之间的关系更加明朗。

以上就是GoJs连线绘图模板Link使用示例详解的详细内容,更多关于GoJs连线绘图模板Link的资料请关注我们其它相关文章!

(0)

相关推荐

  • 深入string理解Golang是怎样实现的

    目录 引言 内容介绍 字符串数据结构 字符串会分配到内存中的哪块区域 编译期即可确定的字符串 如果我们创建两个hello world字符串, 他们会放到同一内存区域吗? 运行时通过+拼接的字符串会放到那块内存中 字面量是否会在编译器合并 当我们用+连接多个字符串时, 会发生什么 rawstring函数 go中字符串是不可变的吗, 我们如何得到一个可变的字符串 []byte和string的更高效转换 结尾 引言 本身打算先写完sync包的, 但前几天在复习以前笔记的时候突然发现与字符串相关的寥寥无

  • Go语言kube-scheduler深度剖析开发之scheduler初始化

    目录 引言 Scheduler之Profiles Scheduler 之 SchedulingQueue Scheduler 之 cache Scheduler 之 NextPod 和 SchedulePod 引言 为了深入学习 kube-scheduler,本系从源码和实战角度深度学 习kube-scheduler,该系列一共分6篇文章,如下: kube-scheduler 整体架构 本文 :初始化一个 scheduler 一个 Pod 是如何调度的 如何开发一个属于自己的scheduler插

  • Go语言开发kube-scheduler整体架构深度剖析

    目录 k8s 的调度器 kube-scheduler 官方描述scheduler 各个类型扩展点 kube-scheduler 代码的主要框架 k8s 的调度器 kube-scheduler kube-scheduler 作为 k8s 的调度器,就好比人的大脑,将行动指定传递到手脚等器官,进而执行对应的动作,对于 kube-scheduler 则是将 Pod 分配(调度)到集群内的各个节点,进而创建容器运行进程,对于k8s来说至关重要. 为了深入学习 kube-scheduler,本系从源码和实

  • Go语言kube-scheduler深度剖析与开发之pod调度

    目录 正文 感知 Pod 取出 Pod 调度 Pod 正文 为了深入学习 kube-scheduler,本系从源码和实战角度深度学 习kube-scheduler,该系列一共分6篇文章,如下: kube-scheduler 整体架构 初始化一个 scheduler 本文: 一个 Pod 是如何调度的 如何开发一个属于自己的scheduler插件 开发一个 prefilter 扩展点的插件 开发一个 socre 扩展点的插件 上一篇文章我们讲了一个 kube-scheduler 是怎么初始化出来的

  • Go语言学习otns示例分析

    目录 学习过程 proto文件 visualize/grpc/replay目录下的文件 cmd/otns-replay目录下的文件 grpc_Service(包含pb) otns_replay(包含pb) cmd/otns/otns.go文件 simulation目录下的文件 type.go simulationController.go simulation_config.go simulation.go cli目录 ast.go CmdRunner.go 总结 学习过程 由于在用虚拟机体验过

  • GoJs连线绘图模板Link使用示例详解

    目录 前言 go.link的简单使用 go.Link的属性配置 routing属性 curve属性 corner.toEndSegmentLength.fromEndSegmentLength.fromShortLength.toShortLength属性 selectable.fromSpot.toSpot属性 总结 前言 可视化图形中除了携带很多信息的节点(node)之外,还需要知道他们之间的关系,而链接他们之间的连线在gojs中是使用go.link进行绘制.在渲染的时候我们根据数据的fro

  • GoJs 图片绘图模板Picture使用示例详解

    目录 前言 go.Picture的使用 go.Picture的属性 width.height.desiredSize属性 source属性 flip属性 imageStretch.imageAlignment属性 拓展 结语 前言 前面已经说过了通过go.TextBlock(文本)和go.Shape(集合图形)来丰富节点内部的显示内容.而有些时候需要在节点内部上传一些说明材料,恰好这些材料又是图片材料.如果拿图片和节点信息对照观看的话,一一对照会特别麻烦.如果能够在节点内部显示缩略图的话.在信息

  • php之Smarty模板使用方法示例详解

    本文详细剖析了smarty模板的使用方法,对于学习smarty的朋友有一定的参考价值.详情如下: 一.模板中的注释 每一个Smarty模板文件,都是通过Web前台语言(xhtml,css和javascript等)结合Smarty引擎的语法开发的. 用到的web前台开发的语言和原来的完全一样,注释也没有变化. Smarty注释语法是'左结束符变量值*'和'*右结束符变量值',在这两个定界符之间的内容都是注释内容,可以包含一行或多行,并且用户浏览网页查看原代码时不会看到注释,它只是模板内在的注释,以

  • AngularJs用户输入动态模板XSS攻击示例详解

    概述 XSS攻击是Web攻击中最常见的攻击方法之一,它是通过对网页注入可执行代码且成功地被浏览器执行,达到攻击的目的,形成了一次有效XSS攻击,一旦攻击成功,它可以获取用户的联系人列表,然后向联系人发送虚假诈骗信息,可以删除用户的日志等等,有时候还和其他攻击方式同时实施比如SQL注入攻击服务器和数据库.Click劫持.相对链接劫持等实施钓鱼,它带来的危害是巨大的,是web安全的头号大敌. 前情提要 angularJs通过"{{}}"来作为输出的标志,而对于双括号里面的内容angular

  • GoJs分组绘图模板go.Group使用示例详解

    目录 前言 Group的使用 Group的属性 handlesDragDropForMembers.isSubGraphExpanded属性 isSubGraphExpanded属性 ungroupable.wasSubGraphExpanded属性 结语 前言 在可视化图形中,很多的节点和连线都有某一个特征或者属于某些分类,为了在使用可视化图形的时候更加直观的看出相同类型节点的集合,我们就会用到分组的绘图模板. Group的使用 //data nodes: [ { key: "1",

  • GoJs图形绘图模板Shape示例详解

    目录 前言 Shape的使用 width和height属性 fill属性 stroke.strokeWidth.strokeDashArray属性 geometry属性 angle.scale属性 strokeCap strokeJoin属性 拓展 结语 前言 在可视化图形的展示过程中,节点内部往往不只是有文字描述,这样看起来很往往比较枯燥.在这个时候我们就可以在图形的节点内部加入一些几何图形.然后实现图形和文字的结合使用的话,不仅可以让节点内的内容更加形象,而且还可以通过图形标记对不同类型的节

  • GoJs基本使用示例详解

    目录 使用gojs背景 gojs的引入 去除水印 使用gojs背景 因为公司业务需要,需要完成一个树形的关系图,并且在后续过程中会对树形关系图进行很多的交互来拓展树形图的展示.因此在研究了D3,antV G6,cytoscape和go.js之后,决定使用gojs实现.因为gojs的交互功能封装比较完善,能够很快的搭建出想要的关系图之外,还有很多封装好的交互功能.例如可以使用键盘进行节点的复制和粘贴,通过textEdited属性实现节点内文字的双击编辑等等. gojs的引入 我们可以直接引入js的

  • Python实现双X轴双Y轴绘图的示例详解

    诈尸人口回归.这一年忙着灌水忙到头都掉了,最近在女朋友的提醒下终于想起来博客的账号密码,正好今天灌水的时候需要画一个双X轴双Y轴的图,研究了两小时终于用Py实现了.找资料的过程中没有发现有系统的文章,反正代码都整理出来了,我决定顺势水一篇. 目前找到的plt实现双X轴双Y轴绘图方式有两种: 使用fig.add_subplot方式将两对坐标系叠加在一个fig上实现双X轴双Y轴效果.所有调整均可完美实现,推荐该方式 通过axes.twinx().twiny()方式实现双X轴双Y轴图形绘制.问题在于对

  • Go语言基础模板设计模式示例详解

    目录 概述 模板模式生活案例 策略模式涉及到两个角色 UML 总结 示例 概述 模板方法模式定义了一个算法的步骤,并允许子类别为一个或多个步骤提供其实践方式.让子类别在不改变算法架构的情况下,重新定义算法中的某些步骤 确定了步骤的执行顺序,单某些步骤因环境或人等因素具体实现是未知的 模板模式生活案例 请客吃饭[点菜->吃东西->结账],每个人点菜不一样,吃东西不一样,结账也不一样从某地到某地[起点->出行方式->终点]起点和终点不一一样,但是每个人出行方式是不一样的 Go没有封装.

  • python绘图pyecharts+pandas的使用详解

    pyecharts介绍 pyecharts 是一个用于生成 Echarts 图表的类库.Echarts 是百度开源的一个数据可视化 JS 库.用 Echarts 生成的图可视化效果非常棒 为避免绘制缺漏,建议全部安装 为了避免下载缓慢,作者全部使用镜像源下载过了 pip install -i https://pypi.tuna.tsinghua.edu.cn/simple/ echarts-countries-pypkg pip install -i https://pypi.tuna.tsin

随机推荐