ogma
Ogma是Linkurious的JavaScript图形可视化库。Ogma的一个实例是一个javascript对象,它在内部存储一个图形, 并根据样式规则在HTML容器中呈现它。
Ogma有两个版本:
- ogma.min.js标准版
- ogma.dist.min.js包含Ogma和所有可选的依赖项
客户端
单个HTML页面
在单页面应用程序中,Ogma可以作为脚本导入:
<!-- Import Ogma -->
<script src="path/to/ogma.min.js"></script>
<!-- Import Ogma and all optional dependencies-->
<script src="path/to/ogma.dist.min.js"></script>
图形
图表包含通过关系(边缘)彼此连接的实体(节点)。每个节点和边缘都嵌入了一个可用于存储自定义属性的数据对象。
除了用于操作内部图形的API之外,Ogma还提供了便捷的函数来生成随机图形,导入图形和连接到外部数据源。
// Import a graph from a file and set it as ogma's internal graph.
ogma.parse.jsonFromUrl('data/myfile.json').then(function (rawGraph) {
ogma.setGraph(rawGraph);
// Retrieve the nodes from the 'Customer' category.
// 'Category' is a property stored in the node's data object.
var customers = ogma.getNodes().filter(function (node) {
return node.getData('Category') === 'Customer';
});
// Print the customers's names to the console.
// 'name' is a property stored in the node's data object.
console.log(customers.getData('name').join());
});
HTML容器
Ogma的一个实例绑定到一个HTML容器(通常是一个
var ogma = new Ogma({
container: 'graph-container'
});
相当于:
var ogma = new Ogma();
ogma.setContainer('graph-container');
Ogma公开了一个API来访问和修改其内部图。这些函数使用Node,Edge,NodeList和EdgeList格式的节点和边。
创建节点和边
让我们在图中添加一些节点和边。请注意,必须在边之前添加节点。当添加或删除许多节点或边缘(超过1,000)时,使用批处理函数(例如ogma.addNodes())比使用它们各自的对应物(例如ogma.addNode())更高效。
// Manually create nodes
ogma.addNodes([
{id: 'john', data: {name: 'John Doe', age: 55}},
{id: 'jane', data: {name: 'Jane Doe', age: 55}},
{id: 'john_jr', data: {name: 'John Doe Jr', age: 15}},
{id: 'jane_jr', data: {name: 'Jane Doe Jr', age: 18}},
]);
ogma.addEdges([
{id: 'e1', source: 'john_jr', target: 'jane', data: {name:'parent'}},
{id: 'e2', source: 'jane_jr', target: 'jane', data: {name:'parent'}},
{id: 'e3', source: 'john', target: 'jane', data: {name:'spouse'}},
]);

访问节点和边缘
函数ogma.getNode()和ogma.getNodes()(resp。ogma.getEdge()和ogma.getEdges())从Ogma的内部图中检索节点(相应的边)。可以链接这些函数以遍历图形并收集符合特定条件的节点。
// Get node by id.
// nJohnJr is a Node object.
var nodeJohnJr = ogma.getNode('john_jr');
// Get nodes by id.
// parents is a NodeList object.
var parents = ogma.getNode(['john', 'jane']);
// Get all edges
// addEdges is an EdgeList object.
var addEdges = ogma.getEdges();
// Get the children of Jane
var neighbors = ogma.getNode('jane')
.getAdjacentEdges()
.filter(function(edge) {
return edge.getData('name') === 'parent';
})
.getSource();
自定义数据
边和节点也可以存储自定义数据(在data属性中)。可以ogma.getData(propertyName)使用Node,Edge,NodeList和EdgeList对象可用的功能检索自定义数据。让我们检索匹配特定条件的节点,然后将它们的名称打印到控制台。
// Store all nodes with an age property above 50 in an NodeList object.
var youngsters = ogma.getNodes().filter(function(node) {
return node.getData('age') > 50;
});
console.log(youngsters.getData('name').join(', '));
ogma的更多相关文章
- iOS UI、Xcode、调试、代码等常见问题总汇(持续更新中)
以前比较懒,遇到问题解决了就完事了,有些问题再次遇到时忘记了当初是怎么解决的,又要查各种资料来解决.好记忆不如烂笔头,不管简单还是复杂都记一下吧,所以决定写一篇常见问题总结,方便以后查阅.现在有点忙, ...
- 异常:带有 CLSID {} 的 COM 对象无效或未注册
今天处理调试打印程序的时候,看到这个异常: 代码: try { string strApplyEmpno=""; string strApplyDeptCode="&qu ...
- qq邮箱html邮件,图片不显示的问题
测试无论是站外的图片还是站内的图片,qq邮箱都会过滤图片,导致显示不出来. 解决办法:图片base64编码.效果图: 代码: <div class="container"&g ...
- 高性能内存图数据库RedisGraph(二)
这篇文章主要介绍用一下RedisGraph的历史和现状. 2018年5月,Redis Labs发布了RedisGraph的预览/测试版.6个月后,在Redis Labs和开源社区的开发者们的共同努力下 ...
随机推荐
- Verilog语言实现并行(循环冗余码)CRC校验
1 前言 (1) 什么是CRC校验? CRC即循环冗余校验码:是数据通信领域中最常用的一种查错校验码,其特征是信息字段和校验字段的长度可以任意选定.循环冗余检查(CRC)是一种数据传输检错功能, ...
- 京东商品及评论爬虫(selenium)
代码查看https://gitee.com/MarkPolaris/reptile/tree/master/jd 中的gly和demo03
- MT【327】两道不等式题
当$x,y\ge0,x+y=2$时求下面式子的最小值:1)$x+\sqrt{x^2-2x+y^2+1}$2)$\dfrac{1}{5}x+\sqrt{x^2-2x+y^2+1}$ 解:1)$P(x,y ...
- 【LOJ#3096】[SNOI2019]数论
[LOJ#3096][SNOI2019]数论 题面 LOJ 题解 考虑枚举一个\(A\),然后考虑有多少个合法的\(B\). 首先这个数可以写成\(a_i+kP\)的形式,那么它模\(Q\)的值成环. ...
- php对某个页面设置基础认证登录设置
记录下. 对某个页面设置认证 代码最开始添加: <?php $user = 'test'; $password = '111111'; // 通过HTTP认证进行验证 if (!isset($_ ...
- 分享自己总结的PMP项目管理20个G的资料,本人去年过的pmp认证,过了5A
版权归作者所有,任何形式转载请联系作者. 我在去年6月拿到的pmp证书,5A的,现在来分享下自己的资料. 这些资料是从我开始学习,到问了很多朋友.老人,到后来报班学习,再到之后做项目管理中总结的很多经 ...
- php5.4、5.5、5.6高版本中htmlspecialchars兼容性处理
在使用php5.4以上版本以上时会有一个函数可能会报错 如下 Warning: htmlspecialchars(): charset `gbk' not supported, assuming ut ...
- jQuery 为动态添加的元素绑定事件
在使用jquery的方式为元素绑定事件时,我经常使用bind或者click,但这只能为页面已经加载好的元素绑定事件.像需要用ajax的方式请求远程数据来动态添加页面元素时,显然以上几种绑定事件的方式是 ...
- JS基础-第1天
JavaScript 第一天笔记 学习目标 了解Javascript的作用及其组成 掌握变量的使用,知道变量的作用是存储数据 掌握变量的命名规范 掌握 JavaScript 的 5 种简单数据类型 掌 ...
- python 单例实现
class View: _instance = None def __new__(cls, *args, **kwargs): if cls._instance is None: cls._insta ...