Не могу представить сетевой график с sigma.js

Я использую сайт ftp Windows на localhost, чтобы поставить свой код

<!DOCTYPE html>
<html>
<head>

  <meta charset="utf-8">
  <script type="text/javascript" src="js/sigma.min.js"></script>
  <script type="text/javascript" src="js/sigma.parsers.gexf.min.js"></script>
  <link   rel="stylesheet" href="style.css">

</head>
<body>

  <div id="sigma-container"></div>

  <script>
  sigma.parsers.gexf(
        'data/arctic.gexf',
        {container: 'sigma-container'},
        function(s) {
        }
      );


// Refresh the graph to see the changes:
s.refresh();

</script>
</body>
</html>

style.css:

  #sigma-container {
  width: 100%;
  height: 100%;
  margin: auto;
  padding: 0;
  z-index: 1;
}

С помощью инструментов разработчика Firefox я выяснил ошибку в браузере:

"ReferenceError: s не определено"

Как я могу это исправить?

2 ответа

Это потому, что переменная s не инициализирована. Я предполагаю, что вы должны быть каким-то объектом.

Попробуйте добавить следующее:

var i,
    s,
    N = 100,
    E = 500,
    g = {
      nodes: [],
      edges: []
    };
// Generate a random graph:
for (i = 0; i < N; i++)
  g.nodes.push({
    id: 'n' + i,
    label: 'Node ' + i,
    x: Math.random(),
    y: Math.random(),
    size: Math.random(),
    color: '#666'
  });
for (i = 0; i < E; i++)
  g.edges.push({
    id: 'e' + i,
    source: 'n' + (Math.random() * N | 0),
    target: 'n' + (Math.random() * N | 0),
    size: Math.random(),
    color: '#ccc'
  });
sigma.renderers.def = sigma.renderers.canvas;
s = new sigma({
  graph: g,
  renderer: {
    container: document.getElementById('graph-container'),
    type: 'canvas'
  },
  settings: {
    borderSize: 2,
    outerBorderSize: 3,
    defaultNodeBorderColor: '#fff',
    defaultNodeOuterBorderColor: 'rgb(236, 81, 72)',
    enableEdgeHovering: true,
    edgeHoverHighlightNodes: 'circle',
  }
});

Это из https://github.com/Linkurious/linkurious.js/blob/plugin/dragNodes/examples/drag-nodes.html

Хотя звонить не нужно refresh()Вы просто должны переместить его в функцию обратного вызова. s будет доступен только в области обратных вызовов.

sigma.parsers.gexf(
  'data/arctic.gexf',
  {container: 'sigma-container'},
  function(s) {
    // Refresh the graph to see the changes:
    s.refresh();
  }
);

Это необходимо, только если у вас уже есть экземпляр sigma. Также см. Документацию по плагинам по адресу https://github.com/jacomyal/sigma.js/tree/master/plugins/sigma.parsers.gexf

Другие вопросы по тегам