javascript - 我如何 "plug in"sigma.js 的插件?

标签 javascript visualization sigma.js

Sigma.js 列出了几个 examples在他们的 GitHub 上,但他们不清楚加载插件需要什么。

我试过简单地包含一个 <script>指向插件的 JavaScript 文件的标记,但这不起作用。如何将插件导入/使用/复制粘贴到我的站点?

最佳答案

首先,包含您需要的 sigma 文件:

<script src="sigma/sigma.concat.js"></script>
<script src="sigma/plugins/sigma.parseGexf.js"></script>
<script src="sigma/plugins/sigma.forceatlas2.js"></script>

然后开始你的脚本;

<script type="text/javascript">
function init() {
  // Instanciate sigma.js and customize rendering :
   sigInst = sigma.init(document.getElementById('graph')).drawingProperties({
    defaultLabelColor: '#fff',
    defaultLabelSize: 14,
    defaultLabelBGColor: '#fff',
    defaultLabelHoverColor: '#000',
    labelThreshold: 6,
    defaultEdgeType: 'curve' 

  }).graphProperties({
    minNodeSize: 2,
    maxNodeSize: 5,
    minEdgeSize: 1,
    maxEdgeSize: 1

  }).mouseProperties({
    maxRatio: 32
  });

  // Parse a GEXF encoded file to fill the graph
  // (requires "sigma.parseGexf.js" to be included)
  sigInst.parseGexf('getgefx.php');


  sigInst.bind('downnodes',function(event){
    var nodes = event.content;
    var neighbors = {};
    sigInst.iterEdges(function(e){
      if(nodes.indexOf(e.source)>=0 || nodes.indexOf(e.target)>=0){
        neighbors[e.source] = 1;
        neighbors[e.target] = 1;

      } 
    }).iterNodes(function(n){
      if(!neighbors[n.id]){
        n.attr['temphidden'] = 1;
        n.attr['oldcolor'] = n.color;
        // var c = sigma.tools.getRGB(n.color);
        n.color = "#eee"; // #ccc";

        // n.color = "rgba("+c['r']+","+c['g']+","+c['b']+",0.2)";
      }
    }).draw(2,2,2);
  }).bind('upnodes',function(){
    sigInst.iterNodes(function(n){
        if(n.attr['temphidden'] == 1) {
            n.color = n.attr['oldcolor'];
            n.attr['temphidden'] = 0;
        }

    }).draw(2,2,2);
  });
  // Draw the graph :
  sigInst.draw(2,2,2);
  sigInst.startForceAtlas2();
  var isRunning = true;
  document.getElementById('stop-layout').addEventListener('click',function(){
    if(isRunning){
      isRunning = false;
      sigInst.stopForceAtlas2();
      document.getElementById('stop-layout').childNodes[0].nodeValue = 'Start Layout';
    }else{
      isRunning = true;
      sigInst.startForceAtlas2();
      document.getElementById('stop-layout').childNodes[0].nodeValue = 'Stop Layout';
    }
  },true);

}

if (document.addEventListener) {
  document.addEventListener("DOMContentLoaded", init, false);
} else {
  window.onload = init;
}
</script>

关于javascript - 我如何 "plug in"sigma.js 的插件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16125705/

相关文章:

javascript - 在 PHP 中使用 IF-ELSE 回显 Javascript

javascript - Three.js 渲染器是否克隆对象位置?

javascript - 在哪里以及如何使用数据段代码?

javascript - 在Sigma.js中加载JSON文件但无法绑定(bind)overEdge事件

javascript - 如何减少 Jquery/Ajax 代码 -> 删除重复

javascript - 如何在一个页面上获得多个 map ?

javascript - 在节点 PIXI.js 上附加文本

lisp - Lisp 中的项目可视化

hash - 容易记住数据的指纹?

javascript - 开始使用 sigma 示例 - 无法让它工作