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容器(通常是一个

元素)保存图形可视化。这种绑定可以在Ogma的构造函数中进行,也可以稍后使用ogma.setContainer()函数进行。以下代码段是等效的:

var ogma = new Ogma({
container: 'graph-container'
});

相当于:

var ogma = new Ogma();
ogma.setContainer('graph-container');
Ogma公开了一个API来访问和修改其内部图。这些函数使用NodeEdgeNodeListEdgeList格式的节点和边。

创建节点和边

让我们在图中添加一些节点和边。请注意,必须在边之前添加节点。当添加或删除许多节点或边缘(超过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的更多相关文章

  1. iOS UI、Xcode、调试、代码等常见问题总汇(持续更新中)

    以前比较懒,遇到问题解决了就完事了,有些问题再次遇到时忘记了当初是怎么解决的,又要查各种资料来解决.好记忆不如烂笔头,不管简单还是复杂都记一下吧,所以决定写一篇常见问题总结,方便以后查阅.现在有点忙, ...

  2. 异常:带有 CLSID {} 的 COM 对象无效或未注册

    今天处理调试打印程序的时候,看到这个异常: 代码: try { string strApplyEmpno=""; string strApplyDeptCode="&qu ...

  3. qq邮箱html邮件,图片不显示的问题

    测试无论是站外的图片还是站内的图片,qq邮箱都会过滤图片,导致显示不出来. 解决办法:图片base64编码.效果图: 代码: <div class="container"&g ...

  4. 高性能内存图数据库RedisGraph(二)

    这篇文章主要介绍用一下RedisGraph的历史和现状. 2018年5月,Redis Labs发布了RedisGraph的预览/测试版.6个月后,在Redis Labs和开源社区的开发者们的共同努力下 ...

随机推荐

  1. hdu-4612(无向图缩点+树的直径)

    题意:给你n个点和m条边的无向图,问你如果多加一条边的话,那么这个图最少的桥是什么 解题思路:无向图缩点和树的直径,用并查集缩点: #include<iostream> #include& ...

  2. 【CSA35G】【XSY3318】Counting Quests DP 拉格朗日反演 NTT

    题目大意 zjt 是个神仙. 一天,zjt 正在和 yww 玩猜数游戏. zjt 先想一个 \([1,n]\) 之间的整数 \(x\),然后 yww 开始向他问问题. yww 每次给 zjt 一个区间 ...

  3. PHP Yii2 composer环境安装

    PHP Yii2 composer环境安装 composer 安装 任意目录执行: php -r "copy('https://install.phpcomposer.com/install ...

  4. MySQL逻辑备份into outfile

    MySQL 备份之 into outfile 逻辑数据导出(备份) 用法: select xxx into outfile '/path/file' from table_name; mysql> ...

  5. pwn-ROP(2)

    通过int80系统只对静态编译有效,动态编译需要用其他方法 本题提供了一个地址输入端,输入函数地址会返回该函数的实际地址,我们用得到的实际地址-偏移地址=基地址,然后用基地址+任意函数的偏移地址就可以 ...

  6. qt 视频播放器错误解决方法

    DirectShowPlayerService::doRender: Unresolved error code 0x80040266 () 当你发布的qmlproject包含QtMultimedia ...

  7. B树和B+树的插入、删除图文详解(good)

    B树和B+树的插入.删除图文详解 1. B树 1. B树的定义 B树也称B-树,它是一颗多路平衡查找树.我们描述一颗B树时需要指定它的阶数,阶数表示了一个结点最多有多少个孩子结点,一般用字母m表示阶数 ...

  8. Apache的安装与配置

    apahe官网 http://www.apache.org/ 安装及配置https://blog.csdn.net/liyang4534/article/details/78036591 常见问题的处 ...

  9. ConcurrentHashMap扩容

    然后,说说精华的部分. Cmap 支持并发扩容,实现方式是,将表拆分,让每个线程处理自己的区间.如下图:     假设总长度是 64 ,每个线程可以分到 16 个桶,各自处理,不会互相影响. 而每个线 ...

  10. Redux中间件组合方法

    中间件 https://redux.js.org/glossary#middleware 中间件在发送端 action端点 和 处理方reducer的端点之间. 主要负责将async action转换 ...