当前位置: 首页 > news >正文

使用joint.js 绘制图

试了几种在js画graph的库,还是joint.js合适一些,对于简单的图显示很适用。具体链接:

http://www.daviddurman.com/automatic-graph-layout-with-jointjs-and-dagre.html


demo:


1.script和css下载:



http://jointjs.com/download :


<link rel="stylesheet" href="joint.css" >
<script src="joint.js" ></script>
<script src="joint.layout.DirectedGraph.js"></script>


http://www.daviddurman.com/assets/autolayout.js:


<script src="autolayout.js" ></script>


2. 示例代码:


<link rel="stylesheet" href="joint.css" >


<script src="joint.js" ></script>
<script src="joint.layout.DirectedGraph.js"></script>
<script src="autolayout.js" ></script>






<textarea id="adjacency-list" rows=40 cols=100>{
  'a': ['b'],
  'a': ['c'],
  'b': ['f'],
  'c': ['e', 'd'],
  'd': [],
  'e': [],
  'f': ['g'],
  'g': []
}</textarea>
<br>
<button id="btn-layout">Layout</button>


<div id="paper"></div>


<script>


// Main.
// -----


var graph = new joint.dia.Graph;


var paper = new joint.dia.Paper({


    el: $('#paper'),
    width: 2000,
    height: 2000,
    gridSize: 1,
    model: graph
});


// Just give the viewport a little padding.
V(paper.viewport).translate(20, 20);


$('#btn-layout').on('click', layout);


function layout() {
    
    try {
        var adjacencyList = eval('adjacencyList = ' + $('#adjacency-list').val());
    } catch (e) { alert(e); }
    
    var cells = buildGraphFromAdjacencyList(adjacencyList);
    graph.resetCells(cells);
    joint.layout.DirectedGraph.layout(graph, { setLinkVertices: false });
}
layout();
</script>


相关文章:

  • myfaces与mojarra(JSF RI)处理空属性类型的不同
  • jsonp 示例
  • 平媒怎么了?
  • The server committed a protocol violation. Section=ResponseHeader Detail=CR must be followed by LF
  • Neubla3中的骨骼动画: CoreAnimation子系统
  • TPL Part 1 Task 的使用
  • 准备移植xynth到arm板上了。
  • TPL - Part 2 异常处理常用方式
  • 一个关于TCHAR的离奇bug
  • C# 使用Xamarin 开发应用 -- 切换Activity
  • Vsual Studio2005打开速度很慢的超级解决方案
  • OO系统分析员之路--用例分析系列(7)--用例规约的编写--业务规则和实体描述[整理重发]...
  • 批量删除多台服务器上的漫游用户配置文件
  • div 长度固定 文字太长实现自动换行
  • 金旭亮博客之“Web开发技术”资源主页
  • CentOS7 安装JDK
  • Github访问慢解决办法
  • Hibernate最全面试题
  • javascript从右向左截取指定位数字符的3种方法
  • MQ框架的比较
  • Python socket服务器端、客户端传送信息
  • vue--为什么data属性必须是一个函数
  • 简单数学运算程序(不定期更新)
  • 理解IaaS, PaaS, SaaS等云模型 (Cloud Models)
  • 如何编写一个可升级的智能合约
  • 视频flv转mp4最快的几种方法(就是不用格式工厂)
  • 说说动画卡顿的解决方案
  • 异步
  • 译米田引理
  • HanLP分词命名实体提取详解
  • Mac 上flink的安装与启动
  • ​无人机石油管道巡检方案新亮点:灵活准确又高效
  • #【QT 5 调试软件后,发布相关:软件生成exe文件 + 文件打包】
  • #android不同版本废弃api,新api。
  • #预处理和函数的对比以及条件编译
  • $var=htmlencode(“‘);alert(‘2“); 的个人理解
  • (动手学习深度学习)第13章 计算机视觉---图像增广与微调
  • (新)网络工程师考点串讲与真题详解
  • (转)Windows2003安全设置/维护
  • (转)用.Net的File控件上传文件的解决方案
  • (最优化理论与方法)第二章最优化所需基础知识-第三节:重要凸集举例
  • ***测试-HTTP方法
  • *2 echo、printf、mkdir命令的应用
  • .Net Attribute详解(上)-Attribute本质以及一个简单示例
  • .NET Reactor简单使用教程
  • .net 调用php,php 调用.net com组件 --
  • .Net下的签名与混淆
  • .net下简单快捷的数值高低位切换
  • .Net转Java自学之路—SpringMVC框架篇六(异常处理)
  • @Autowired @Resource @Qualifier的区别
  • [2019.3.20]BZOJ4573 [Zjoi2016]大森林
  • [20190113]四校联考
  • [④ADRV902x]: Digital Filter Configuration(发射端)
  • [AI]ChatGPT4 与 ChatGPT3.5 区别有多大
  • [AIGC] Redis基础命令集详细介绍