vis.js is a dynamic, browser-based visualization library
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

110 lines
2.9 KiB

  1. <!doctype html>
  2. <html>
  3. <head>
  4. <title>Network | Playing with Physics</title>
  5. <style type="text/css">
  6. body {
  7. font: 10pt sans;
  8. }
  9. #mynetwork {
  10. width: 600px;
  11. height: 600px;
  12. border: 1px solid lightgray;
  13. }
  14. </style>
  15. <script type="text/javascript" src="../../dist/vis.js"></script>
  16. <link href="../../dist/vis.css" rel="stylesheet" type="text/css" />
  17. <script type="text/javascript">
  18. var nodes = null;
  19. var edges = null;
  20. var network = null;
  21. function draw() {
  22. nodes = [];
  23. edges = [];
  24. var connectionCount = [];
  25. // randomly create some nodes and edges
  26. var nodeCount = 60;
  27. for (var i = 0; i < nodeCount; i++) {
  28. nodes.push({
  29. id: i,
  30. label: String(i)
  31. });
  32. connectionCount[i] = 0;
  33. // create edges in a scale-free-network way
  34. if (i == 1) {
  35. var from = i;
  36. var to = 0;
  37. edges.push({
  38. from: from,
  39. to: to
  40. });
  41. connectionCount[from]++;
  42. connectionCount[to]++;
  43. }
  44. else if (i > 1) {
  45. var conn = edges.length * 2;
  46. var rand = Math.floor(Math.random() * conn);
  47. var cum = 0;
  48. var j = 0;
  49. while (j < connectionCount.length && cum < rand) {
  50. cum += connectionCount[j];
  51. j++;
  52. }
  53. var from = i;
  54. var to = j;
  55. edges.push({
  56. from: from,
  57. to: to
  58. });
  59. connectionCount[from]++;
  60. connectionCount[to]++;
  61. }
  62. }
  63. // create a network
  64. var container = document.getElementById('mynetwork');
  65. var data = {
  66. nodes: nodes,
  67. edges: edges
  68. };
  69. var options = {
  70. edges:{opacity:0.2},
  71. stabilize: false,
  72. configurePhysics:true
  73. };
  74. network = new vis.Network(container, data, options);
  75. // add event listeners
  76. network.on('select', function(params) {
  77. document.getElementById('selection').innerHTML = 'Selection: ' + params.nodes;
  78. });
  79. }
  80. </script>
  81. </head>
  82. <body onload="draw();">
  83. <h2>Playing with Physics</h2>
  84. <div style="width: 700px; font-size:14px; text-align: justify;">
  85. Every dataset is different. Nodes can have different sizes based on content, interconnectivity can be high or low etc. Because of this, network has a special option
  86. that the user can use to explore which settings may be good for him or her. This is ment to be used during the development phase when you are implementing vis.js. Once you have found
  87. settings you are happy with, you can supply them to network using the documented physics options.
  88. On start, the default settings will be loaded. Keep in mind that selecting the hierarchical simulation mode <b>disables</b> smooth curves. These will not be enabled again afterwards.
  89. </div>
  90. <br />
  91. <div id="mynetwork"></div>
  92. <p id="selection"></p>
  93. </body>
  94. </html>