Hello
Last active
May 8, 2018 08:30
-
-
Save ngminhtrung/75030e8e357088158f694433dbb05481 to your computer and use it in GitHub Desktop.
Adjustable Link Strength for Force Layout based on data of Miserables
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| <!DOCTYPE html> | |
| <html lang="en"> | |
| <head> | |
| <meta charset="UTF-8"> | |
| <meta name="viewport" content="width=device-width, initial-scale=1.0"> | |
| <meta http-equiv="X-UA-Compatible" content="ie=edge"> | |
| <style> | |
| * { | |
| padding: 0; | |
| margin: 0; | |
| box-sizing: border-box; | |
| } | |
| .container { | |
| margin-top: 10vh; | |
| text-align: center; | |
| background-color: lightgoldenrodyellow; | |
| } | |
| .slider { | |
| display: flex; | |
| justify-content: center; | |
| } | |
| label { | |
| font-family: Arial, Helvetica, sans-serif; | |
| position: absolute; | |
| left: 10px; | |
| top: 10px; | |
| margin: 20px auto; | |
| text-align: center; | |
| } | |
| .links line { | |
| stroke: #999; | |
| stroke-opacity: 0.6; | |
| } | |
| .nodes circle { | |
| stroke: #fff; | |
| stroke-width: 1.5px; | |
| } | |
| </style> | |
| <script src="https://d3js.org/d3.v4.min.js"></script> | |
| <title>D3js - Network Chart - </title> | |
| </head> | |
| <body> | |
| <div class="container"> | |
| <div class="slider"> | |
| <label for="inputStrength"> | |
| <input type="range" name="" id="inputStrength" min="0" max="1" step="any" value="0.5" style="width: 240px">Link Strength</label> | |
| </div> | |
| <div class="chart"> | |
| <svg width="960" height="600"></svg> | |
| </div> | |
| </div> | |
| <script> | |
| const svg = d3.select("svg"); | |
| const width = +svg.attr("width"); | |
| const height = +svg.attr("height"); | |
| const color = d3.scaleOrdinal(d3.schemeCategory20); | |
| const simulation = d3.forceSimulation() | |
| .force("link", d3.forceLink().id(d => d.id).strength(0.5)) | |
| .force("charge", d3.forceManyBody()) | |
| .force("center", d3.forceCenter(width / 2, height / 2)); | |
| const drag = d3.drag() | |
| .on("start", dragstarted) | |
| .on("drag", dragged) | |
| .on("end", dragended); | |
| d3.select("input[type=range]") | |
| .on("input", inputEventHanlder) | |
| d3.json("miserables.json", function (error, graph) { | |
| if (error) throw error; | |
| console.log(graph); | |
| const link = svg.append("g") | |
| .attr("class", "links") | |
| .selectAll("line") | |
| .data(graph.links) | |
| .enter().append("line") | |
| .attr("stroke-width", d => Math.sqrt(d.value)); | |
| const node = svg.append("g") | |
| .attr("class", "nodes") | |
| .selectAll("circle") | |
| .data(graph.nodes) | |
| .enter() | |
| .append("circle") | |
| .attr("r", 5) | |
| .attr("fill", d => color(d.group)) | |
| .call(drag) | |
| .on("click", clickEventHanlder); | |
| node.append("title") | |
| .text(d => d.id); | |
| simulation | |
| .nodes(graph.nodes) | |
| .on("tick", tickEventHandler); | |
| simulation | |
| .force("link") | |
| .links(graph.links); | |
| function tickEventHandler() { | |
| // console.count("Tick đê tick đê"); | |
| // console.log(simulation.alpha()); | |
| link | |
| .attr("x1", d => d.source.x) | |
| .attr("y1", d => d.source.y) | |
| .attr("x2", d => d.target.x) | |
| .attr("y2", d => d.target.y); | |
| node | |
| .attr("cx", d => d.x) | |
| .attr("cy", d => d.y); | |
| } | |
| }); | |
| function clickEventHanlder(d) { | |
| if (d3.event.defaultPrevented) return; // ignore drag | |
| console.log(d); | |
| } | |
| function dragstarted(d) { | |
| if (!event.active) simulation.alphaTarget(0.3).restart(); | |
| d.fx = d.x; | |
| d.fy = d.y; | |
| } | |
| function dragged(d) { | |
| d.fx = d3.event.x; | |
| d.fy = d3.event.y; | |
| } | |
| function dragended(d) { | |
| if (!d3.event.active) simulation.alphaTarget(0); | |
| d.fx = null; | |
| d.fy = null; | |
| } | |
| function inputEventHanlder() { | |
| simulation | |
| .force("link") | |
| .strength(+this.value); | |
| simulation | |
| .alpha(1).restart(); | |
| } | |
| </script> | |
| </body> | |
| </html> |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| { | |
| "nodes": [ | |
| { | |
| "id": "Myriel", | |
| "group": 1 | |
| }, | |
| { | |
| "id": "Napoleon", | |
| "group": 1 | |
| }, | |
| { | |
| "id": "MlleBaptistine", | |
| "group": 1 | |
| }, | |
| { | |
| "id": "MmeMagloire", | |
| "group": 1 | |
| }, | |
| { | |
| "id": "CountessdeLo", | |
| "group": 1 | |
| }, | |
| { | |
| "id": "Geborand", | |
| "group": 1 | |
| }, | |
| { | |
| "id": "Champtercier", | |
| "group": 1 | |
| }, | |
| { | |
| "id": "Cravatte", | |
| "group": 1 | |
| }, | |
| { | |
| "id": "Count", | |
| "group": 1 | |
| }, | |
| { | |
| "id": "OldMan", | |
| "group": 1 | |
| }, | |
| { | |
| "id": "Labarre", | |
| "group": 2 | |
| }, | |
| { | |
| "id": "Valjean", | |
| "group": 2 | |
| }, | |
| { | |
| "id": "Marguerite", | |
| "group": 3 | |
| }, | |
| { | |
| "id": "MmedeR", | |
| "group": 2 | |
| }, | |
| { | |
| "id": "Isabeau", | |
| "group": 2 | |
| }, | |
| { | |
| "id": "Gervais", | |
| "group": 2 | |
| }, | |
| { | |
| "id": "Tholomyes", | |
| "group": 3 | |
| }, | |
| { | |
| "id": "Listolier", | |
| "group": 3 | |
| }, | |
| { | |
| "id": "Fameuil", | |
| "group": 3 | |
| }, | |
| { | |
| "id": "Blacheville", | |
| "group": 3 | |
| }, | |
| { | |
| "id": "Favourite", | |
| "group": 3 | |
| }, | |
| { | |
| "id": "Dahlia", | |
| "group": 3 | |
| }, | |
| { | |
| "id": "Zephine", | |
| "group": 3 | |
| }, | |
| { | |
| "id": "Fantine", | |
| "group": 3 | |
| }, | |
| { | |
| "id": "MmeThenardier", | |
| "group": 4 | |
| }, | |
| { | |
| "id": "Thenardier", | |
| "group": 4 | |
| }, | |
| { | |
| "id": "Cosette", | |
| "group": 5 | |
| }, | |
| { | |
| "id": "Javert", | |
| "group": 4 | |
| }, | |
| { | |
| "id": "Fauchelevent", | |
| "group": 0 | |
| }, | |
| { | |
| "id": "Bamatabois", | |
| "group": 2 | |
| }, | |
| { | |
| "id": "Perpetue", | |
| "group": 3 | |
| }, | |
| { | |
| "id": "Simplice", | |
| "group": 2 | |
| }, | |
| { | |
| "id": "Scaufflaire", | |
| "group": 2 | |
| }, | |
| { | |
| "id": "Woman1", | |
| "group": 2 | |
| }, | |
| { | |
| "id": "Judge", | |
| "group": 2 | |
| }, | |
| { | |
| "id": "Champmathieu", | |
| "group": 2 | |
| }, | |
| { | |
| "id": "Brevet", | |
| "group": 2 | |
| }, | |
| { | |
| "id": "Chenildieu", | |
| "group": 2 | |
| }, | |
| { | |
| "id": "Cochepaille", | |
| "group": 2 | |
| }, | |
| { | |
| "id": "Pontmercy", | |
| "group": 4 | |
| }, | |
| { | |
| "id": "Boulatruelle", | |
| "group": 6 | |
| }, | |
| { | |
| "id": "Eponine", | |
| "group": 4 | |
| }, | |
| { | |
| "id": "Anzelma", | |
| "group": 4 | |
| }, | |
| { | |
| "id": "Woman2", | |
| "group": 5 | |
| }, | |
| { | |
| "id": "MotherInnocent", | |
| "group": 0 | |
| }, | |
| { | |
| "id": "Gribier", | |
| "group": 0 | |
| }, | |
| { | |
| "id": "Jondrette", | |
| "group": 7 | |
| }, | |
| { | |
| "id": "MmeBurgon", | |
| "group": 7 | |
| }, | |
| { | |
| "id": "Gavroche", | |
| "group": 8 | |
| }, | |
| { | |
| "id": "Gillenormand", | |
| "group": 5 | |
| }, | |
| { | |
| "id": "Magnon", | |
| "group": 5 | |
| }, | |
| { | |
| "id": "MlleGillenormand", | |
| "group": 5 | |
| }, | |
| { | |
| "id": "MmePontmercy", | |
| "group": 5 | |
| }, | |
| { | |
| "id": "MlleVaubois", | |
| "group": 5 | |
| }, | |
| { | |
| "id": "LtGillenormand", | |
| "group": 5 | |
| }, | |
| { | |
| "id": "Marius", | |
| "group": 8 | |
| }, | |
| { | |
| "id": "BaronessT", | |
| "group": 5 | |
| }, | |
| { | |
| "id": "Mabeuf", | |
| "group": 8 | |
| }, | |
| { | |
| "id": "Enjolras", | |
| "group": 8 | |
| }, | |
| { | |
| "id": "Combeferre", | |
| "group": 8 | |
| }, | |
| { | |
| "id": "Prouvaire", | |
| "group": 8 | |
| }, | |
| { | |
| "id": "Feuilly", | |
| "group": 8 | |
| }, | |
| { | |
| "id": "Courfeyrac", | |
| "group": 8 | |
| }, | |
| { | |
| "id": "Bahorel", | |
| "group": 8 | |
| }, | |
| { | |
| "id": "Bossuet", | |
| "group": 8 | |
| }, | |
| { | |
| "id": "Joly", | |
| "group": 8 | |
| }, | |
| { | |
| "id": "Grantaire", | |
| "group": 8 | |
| }, | |
| { | |
| "id": "MotherPlutarch", | |
| "group": 9 | |
| }, | |
| { | |
| "id": "Gueulemer", | |
| "group": 4 | |
| }, | |
| { | |
| "id": "Babet", | |
| "group": 4 | |
| }, | |
| { | |
| "id": "Claquesous", | |
| "group": 4 | |
| }, | |
| { | |
| "id": "Montparnasse", | |
| "group": 4 | |
| }, | |
| { | |
| "id": "Toussaint", | |
| "group": 5 | |
| }, | |
| { | |
| "id": "Child1", | |
| "group": 10 | |
| }, | |
| { | |
| "id": "Child2", | |
| "group": 10 | |
| }, | |
| { | |
| "id": "Brujon", | |
| "group": 4 | |
| }, | |
| { | |
| "id": "MmeHucheloup", | |
| "group": 8 | |
| } | |
| ], | |
| "links": [ | |
| { | |
| "source": "Napoleon", | |
| "target": "Myriel", | |
| "value": 1 | |
| }, | |
| { | |
| "source": "MlleBaptistine", | |
| "target": "Myriel", | |
| "value": 8 | |
| }, | |
| { | |
| "source": "MmeMagloire", | |
| "target": "Myriel", | |
| "value": 10 | |
| }, | |
| { | |
| "source": "MmeMagloire", | |
| "target": "MlleBaptistine", | |
| "value": 6 | |
| }, | |
| { | |
| "source": "CountessdeLo", | |
| "target": "Myriel", | |
| "value": 1 | |
| }, | |
| { | |
| "source": "Geborand", | |
| "target": "Myriel", | |
| "value": 1 | |
| }, | |
| { | |
| "source": "Champtercier", | |
| "target": "Myriel", | |
| "value": 1 | |
| }, | |
| { | |
| "source": "Cravatte", | |
| "target": "Myriel", | |
| "value": 1 | |
| }, | |
| { | |
| "source": "Count", | |
| "target": "Myriel", | |
| "value": 2 | |
| }, | |
| { | |
| "source": "OldMan", | |
| "target": "Myriel", | |
| "value": 1 | |
| }, | |
| { | |
| "source": "Valjean", | |
| "target": "Labarre", | |
| "value": 1 | |
| }, | |
| { | |
| "source": "Valjean", | |
| "target": "MmeMagloire", | |
| "value": 3 | |
| }, | |
| { | |
| "source": "Valjean", | |
| "target": "MlleBaptistine", | |
| "value": 3 | |
| }, | |
| { | |
| "source": "Valjean", | |
| "target": "Myriel", | |
| "value": 5 | |
| }, | |
| { | |
| "source": "Marguerite", | |
| "target": "Valjean", | |
| "value": 1 | |
| }, | |
| { | |
| "source": "MmedeR", | |
| "target": "Valjean", | |
| "value": 1 | |
| }, | |
| { | |
| "source": "Isabeau", | |
| "target": "Valjean", | |
| "value": 1 | |
| }, | |
| { | |
| "source": "Gervais", | |
| "target": "Valjean", | |
| "value": 1 | |
| }, | |
| { | |
| "source": "Listolier", | |
| "target": "Tholomyes", | |
| "value": 4 | |
| }, | |
| { | |
| "source": "Fameuil", | |
| "target": "Tholomyes", | |
| "value": 4 | |
| }, | |
| { | |
| "source": "Fameuil", | |
| "target": "Listolier", | |
| "value": 4 | |
| }, | |
| { | |
| "source": "Blacheville", | |
| "target": "Tholomyes", | |
| "value": 4 | |
| }, | |
| { | |
| "source": "Blacheville", | |
| "target": "Listolier", | |
| "value": 4 | |
| }, | |
| { | |
| "source": "Blacheville", | |
| "target": "Fameuil", | |
| "value": 4 | |
| }, | |
| { | |
| "source": "Favourite", | |
| "target": "Tholomyes", | |
| "value": 3 | |
| }, | |
| { | |
| "source": "Favourite", | |
| "target": "Listolier", | |
| "value": 3 | |
| }, | |
| { | |
| "source": "Favourite", | |
| "target": "Fameuil", | |
| "value": 3 | |
| }, | |
| { | |
| "source": "Favourite", | |
| "target": "Blacheville", | |
| "value": 4 | |
| }, | |
| { | |
| "source": "Dahlia", | |
| "target": "Tholomyes", | |
| "value": 3 | |
| }, | |
| { | |
| "source": "Dahlia", | |
| "target": "Listolier", | |
| "value": 3 | |
| }, | |
| { | |
| "source": "Dahlia", | |
| "target": "Fameuil", | |
| "value": 3 | |
| }, | |
| { | |
| "source": "Dahlia", | |
| "target": "Blacheville", | |
| "value": 3 | |
| }, | |
| { | |
| "source": "Dahlia", | |
| "target": "Favourite", | |
| "value": 5 | |
| }, | |
| { | |
| "source": "Zephine", | |
| "target": "Tholomyes", | |
| "value": 3 | |
| }, | |
| { | |
| "source": "Zephine", | |
| "target": "Listolier", | |
| "value": 3 | |
| }, | |
| { | |
| "source": "Zephine", | |
| "target": "Fameuil", | |
| "value": 3 | |
| }, | |
| { | |
| "source": "Zephine", | |
| "target": "Blacheville", | |
| "value": 3 | |
| }, | |
| { | |
| "source": "Zephine", | |
| "target": "Favourite", | |
| "value": 4 | |
| }, | |
| { | |
| "source": "Zephine", | |
| "target": "Dahlia", | |
| "value": 4 | |
| }, | |
| { | |
| "source": "Fantine", | |
| "target": "Tholomyes", | |
| "value": 3 | |
| }, | |
| { | |
| "source": "Fantine", | |
| "target": "Listolier", | |
| "value": 3 | |
| }, | |
| { | |
| "source": "Fantine", | |
| "target": "Fameuil", | |
| "value": 3 | |
| }, | |
| { | |
| "source": "Fantine", | |
| "target": "Blacheville", | |
| "value": 3 | |
| }, | |
| { | |
| "source": "Fantine", | |
| "target": "Favourite", | |
| "value": 4 | |
| }, | |
| { | |
| "source": "Fantine", | |
| "target": "Dahlia", | |
| "value": 4 | |
| }, | |
| { | |
| "source": "Fantine", | |
| "target": "Zephine", | |
| "value": 4 | |
| }, | |
| { | |
| "source": "Fantine", | |
| "target": "Marguerite", | |
| "value": 2 | |
| }, | |
| { | |
| "source": "Fantine", | |
| "target": "Valjean", | |
| "value": 9 | |
| }, | |
| { | |
| "source": "MmeThenardier", | |
| "target": "Fantine", | |
| "value": 2 | |
| }, | |
| { | |
| "source": "MmeThenardier", | |
| "target": "Valjean", | |
| "value": 7 | |
| }, | |
| { | |
| "source": "Thenardier", | |
| "target": "MmeThenardier", | |
| "value": 13 | |
| }, | |
| { | |
| "source": "Thenardier", | |
| "target": "Fantine", | |
| "value": 1 | |
| }, | |
| { | |
| "source": "Thenardier", | |
| "target": "Valjean", | |
| "value": 12 | |
| }, | |
| { | |
| "source": "Cosette", | |
| "target": "MmeThenardier", | |
| "value": 4 | |
| }, | |
| { | |
| "source": "Cosette", | |
| "target": "Valjean", | |
| "value": 31 | |
| }, | |
| { | |
| "source": "Cosette", | |
| "target": "Tholomyes", | |
| "value": 1 | |
| }, | |
| { | |
| "source": "Cosette", | |
| "target": "Thenardier", | |
| "value": 1 | |
| }, | |
| { | |
| "source": "Javert", | |
| "target": "Valjean", | |
| "value": 17 | |
| }, | |
| { | |
| "source": "Javert", | |
| "target": "Fantine", | |
| "value": 5 | |
| }, | |
| { | |
| "source": "Javert", | |
| "target": "Thenardier", | |
| "value": 5 | |
| }, | |
| { | |
| "source": "Javert", | |
| "target": "MmeThenardier", | |
| "value": 1 | |
| }, | |
| { | |
| "source": "Javert", | |
| "target": "Cosette", | |
| "value": 1 | |
| }, | |
| { | |
| "source": "Fauchelevent", | |
| "target": "Valjean", | |
| "value": 8 | |
| }, | |
| { | |
| "source": "Fauchelevent", | |
| "target": "Javert", | |
| "value": 1 | |
| }, | |
| { | |
| "source": "Bamatabois", | |
| "target": "Fantine", | |
| "value": 1 | |
| }, | |
| { | |
| "source": "Bamatabois", | |
| "target": "Javert", | |
| "value": 1 | |
| }, | |
| { | |
| "source": "Bamatabois", | |
| "target": "Valjean", | |
| "value": 2 | |
| }, | |
| { | |
| "source": "Perpetue", | |
| "target": "Fantine", | |
| "value": 1 | |
| }, | |
| { | |
| "source": "Simplice", | |
| "target": "Perpetue", | |
| "value": 2 | |
| }, | |
| { | |
| "source": "Simplice", | |
| "target": "Valjean", | |
| "value": 3 | |
| }, | |
| { | |
| "source": "Simplice", | |
| "target": "Fantine", | |
| "value": 2 | |
| }, | |
| { | |
| "source": "Simplice", | |
| "target": "Javert", | |
| "value": 1 | |
| }, | |
| { | |
| "source": "Scaufflaire", | |
| "target": "Valjean", | |
| "value": 1 | |
| }, | |
| { | |
| "source": "Woman1", | |
| "target": "Valjean", | |
| "value": 2 | |
| }, | |
| { | |
| "source": "Woman1", | |
| "target": "Javert", | |
| "value": 1 | |
| }, | |
| { | |
| "source": "Judge", | |
| "target": "Valjean", | |
| "value": 3 | |
| }, | |
| { | |
| "source": "Judge", | |
| "target": "Bamatabois", | |
| "value": 2 | |
| }, | |
| { | |
| "source": "Champmathieu", | |
| "target": "Valjean", | |
| "value": 3 | |
| }, | |
| { | |
| "source": "Champmathieu", | |
| "target": "Judge", | |
| "value": 3 | |
| }, | |
| { | |
| "source": "Champmathieu", | |
| "target": "Bamatabois", | |
| "value": 2 | |
| }, | |
| { | |
| "source": "Brevet", | |
| "target": "Judge", | |
| "value": 2 | |
| }, | |
| { | |
| "source": "Brevet", | |
| "target": "Champmathieu", | |
| "value": 2 | |
| }, | |
| { | |
| "source": "Brevet", | |
| "target": "Valjean", | |
| "value": 2 | |
| }, | |
| { | |
| "source": "Brevet", | |
| "target": "Bamatabois", | |
| "value": 1 | |
| }, | |
| { | |
| "source": "Chenildieu", | |
| "target": "Judge", | |
| "value": 2 | |
| }, | |
| { | |
| "source": "Chenildieu", | |
| "target": "Champmathieu", | |
| "value": 2 | |
| }, | |
| { | |
| "source": "Chenildieu", | |
| "target": "Brevet", | |
| "value": 2 | |
| }, | |
| { | |
| "source": "Chenildieu", | |
| "target": "Valjean", | |
| "value": 2 | |
| }, | |
| { | |
| "source": "Chenildieu", | |
| "target": "Bamatabois", | |
| "value": 1 | |
| }, | |
| { | |
| "source": "Cochepaille", | |
| "target": "Judge", | |
| "value": 2 | |
| }, | |
| { | |
| "source": "Cochepaille", | |
| "target": "Champmathieu", | |
| "value": 2 | |
| }, | |
| { | |
| "source": "Cochepaille", | |
| "target": "Brevet", | |
| "value": 2 | |
| }, | |
| { | |
| "source": "Cochepaille", | |
| "target": "Chenildieu", | |
| "value": 2 | |
| }, | |
| { | |
| "source": "Cochepaille", | |
| "target": "Valjean", | |
| "value": 2 | |
| }, | |
| { | |
| "source": "Cochepaille", | |
| "target": "Bamatabois", | |
| "value": 1 | |
| }, | |
| { | |
| "source": "Pontmercy", | |
| "target": "Thenardier", | |
| "value": 1 | |
| }, | |
| { | |
| "source": "Boulatruelle", | |
| "target": "Thenardier", | |
| "value": 1 | |
| }, | |
| { | |
| "source": "Eponine", | |
| "target": "MmeThenardier", | |
| "value": 2 | |
| }, | |
| { | |
| "source": "Eponine", | |
| "target": "Thenardier", | |
| "value": 3 | |
| }, | |
| { | |
| "source": "Anzelma", | |
| "target": "Eponine", | |
| "value": 2 | |
| }, | |
| { | |
| "source": "Anzelma", | |
| "target": "Thenardier", | |
| "value": 2 | |
| }, | |
| { | |
| "source": "Anzelma", | |
| "target": "MmeThenardier", | |
| "value": 1 | |
| }, | |
| { | |
| "source": "Woman2", | |
| "target": "Valjean", | |
| "value": 3 | |
| }, | |
| { | |
| "source": "Woman2", | |
| "target": "Cosette", | |
| "value": 1 | |
| }, | |
| { | |
| "source": "Woman2", | |
| "target": "Javert", | |
| "value": 1 | |
| }, | |
| { | |
| "source": "MotherInnocent", | |
| "target": "Fauchelevent", | |
| "value": 3 | |
| }, | |
| { | |
| "source": "MotherInnocent", | |
| "target": "Valjean", | |
| "value": 1 | |
| }, | |
| { | |
| "source": "Gribier", | |
| "target": "Fauchelevent", | |
| "value": 2 | |
| }, | |
| { | |
| "source": "MmeBurgon", | |
| "target": "Jondrette", | |
| "value": 1 | |
| }, | |
| { | |
| "source": "Gavroche", | |
| "target": "MmeBurgon", | |
| "value": 2 | |
| }, | |
| { | |
| "source": "Gavroche", | |
| "target": "Thenardier", | |
| "value": 1 | |
| }, | |
| { | |
| "source": "Gavroche", | |
| "target": "Javert", | |
| "value": 1 | |
| }, | |
| { | |
| "source": "Gavroche", | |
| "target": "Valjean", | |
| "value": 1 | |
| }, | |
| { | |
| "source": "Gillenormand", | |
| "target": "Cosette", | |
| "value": 3 | |
| }, | |
| { | |
| "source": "Gillenormand", | |
| "target": "Valjean", | |
| "value": 2 | |
| }, | |
| { | |
| "source": "Magnon", | |
| "target": "Gillenormand", | |
| "value": 1 | |
| }, | |
| { | |
| "source": "Magnon", | |
| "target": "MmeThenardier", | |
| "value": 1 | |
| }, | |
| { | |
| "source": "MlleGillenormand", | |
| "target": "Gillenormand", | |
| "value": 9 | |
| }, | |
| { | |
| "source": "MlleGillenormand", | |
| "target": "Cosette", | |
| "value": 2 | |
| }, | |
| { | |
| "source": "MlleGillenormand", | |
| "target": "Valjean", | |
| "value": 2 | |
| }, | |
| { | |
| "source": "MmePontmercy", | |
| "target": "MlleGillenormand", | |
| "value": 1 | |
| }, | |
| { | |
| "source": "MmePontmercy", | |
| "target": "Pontmercy", | |
| "value": 1 | |
| }, | |
| { | |
| "source": "MlleVaubois", | |
| "target": "MlleGillenormand", | |
| "value": 1 | |
| }, | |
| { | |
| "source": "LtGillenormand", | |
| "target": "MlleGillenormand", | |
| "value": 2 | |
| }, | |
| { | |
| "source": "LtGillenormand", | |
| "target": "Gillenormand", | |
| "value": 1 | |
| }, | |
| { | |
| "source": "LtGillenormand", | |
| "target": "Cosette", | |
| "value": 1 | |
| }, | |
| { | |
| "source": "Marius", | |
| "target": "MlleGillenormand", | |
| "value": 6 | |
| }, | |
| { | |
| "source": "Marius", | |
| "target": "Gillenormand", | |
| "value": 12 | |
| }, | |
| { | |
| "source": "Marius", | |
| "target": "Pontmercy", | |
| "value": 1 | |
| }, | |
| { | |
| "source": "Marius", | |
| "target": "LtGillenormand", | |
| "value": 1 | |
| }, | |
| { | |
| "source": "Marius", | |
| "target": "Cosette", | |
| "value": 21 | |
| }, | |
| { | |
| "source": "Marius", | |
| "target": "Valjean", | |
| "value": 19 | |
| }, | |
| { | |
| "source": "Marius", | |
| "target": "Tholomyes", | |
| "value": 1 | |
| }, | |
| { | |
| "source": "Marius", | |
| "target": "Thenardier", | |
| "value": 2 | |
| }, | |
| { | |
| "source": "Marius", | |
| "target": "Eponine", | |
| "value": 5 | |
| }, | |
| { | |
| "source": "Marius", | |
| "target": "Gavroche", | |
| "value": 4 | |
| }, | |
| { | |
| "source": "BaronessT", | |
| "target": "Gillenormand", | |
| "value": 1 | |
| }, | |
| { | |
| "source": "BaronessT", | |
| "target": "Marius", | |
| "value": 1 | |
| }, | |
| { | |
| "source": "Mabeuf", | |
| "target": "Marius", | |
| "value": 1 | |
| }, | |
| { | |
| "source": "Mabeuf", | |
| "target": "Eponine", | |
| "value": 1 | |
| }, | |
| { | |
| "source": "Mabeuf", | |
| "target": "Gavroche", | |
| "value": 1 | |
| }, | |
| { | |
| "source": "Enjolras", | |
| "target": "Marius", | |
| "value": 7 | |
| }, | |
| { | |
| "source": "Enjolras", | |
| "target": "Gavroche", | |
| "value": 7 | |
| }, | |
| { | |
| "source": "Enjolras", | |
| "target": "Javert", | |
| "value": 6 | |
| }, | |
| { | |
| "source": "Enjolras", | |
| "target": "Mabeuf", | |
| "value": 1 | |
| }, | |
| { | |
| "source": "Enjolras", | |
| "target": "Valjean", | |
| "value": 4 | |
| }, | |
| { | |
| "source": "Combeferre", | |
| "target": "Enjolras", | |
| "value": 15 | |
| }, | |
| { | |
| "source": "Combeferre", | |
| "target": "Marius", | |
| "value": 5 | |
| }, | |
| { | |
| "source": "Combeferre", | |
| "target": "Gavroche", | |
| "value": 6 | |
| }, | |
| { | |
| "source": "Combeferre", | |
| "target": "Mabeuf", | |
| "value": 2 | |
| }, | |
| { | |
| "source": "Prouvaire", | |
| "target": "Gavroche", | |
| "value": 1 | |
| }, | |
| { | |
| "source": "Prouvaire", | |
| "target": "Enjolras", | |
| "value": 4 | |
| }, | |
| { | |
| "source": "Prouvaire", | |
| "target": "Combeferre", | |
| "value": 2 | |
| }, | |
| { | |
| "source": "Feuilly", | |
| "target": "Gavroche", | |
| "value": 2 | |
| }, | |
| { | |
| "source": "Feuilly", | |
| "target": "Enjolras", | |
| "value": 6 | |
| }, | |
| { | |
| "source": "Feuilly", | |
| "target": "Prouvaire", | |
| "value": 2 | |
| }, | |
| { | |
| "source": "Feuilly", | |
| "target": "Combeferre", | |
| "value": 5 | |
| }, | |
| { | |
| "source": "Feuilly", | |
| "target": "Mabeuf", | |
| "value": 1 | |
| }, | |
| { | |
| "source": "Feuilly", | |
| "target": "Marius", | |
| "value": 1 | |
| }, | |
| { | |
| "source": "Courfeyrac", | |
| "target": "Marius", | |
| "value": 9 | |
| }, | |
| { | |
| "source": "Courfeyrac", | |
| "target": "Enjolras", | |
| "value": 17 | |
| }, | |
| { | |
| "source": "Courfeyrac", | |
| "target": "Combeferre", | |
| "value": 13 | |
| }, | |
| { | |
| "source": "Courfeyrac", | |
| "target": "Gavroche", | |
| "value": 7 | |
| }, | |
| { | |
| "source": "Courfeyrac", | |
| "target": "Mabeuf", | |
| "value": 2 | |
| }, | |
| { | |
| "source": "Courfeyrac", | |
| "target": "Eponine", | |
| "value": 1 | |
| }, | |
| { | |
| "source": "Courfeyrac", | |
| "target": "Feuilly", | |
| "value": 6 | |
| }, | |
| { | |
| "source": "Courfeyrac", | |
| "target": "Prouvaire", | |
| "value": 3 | |
| }, | |
| { | |
| "source": "Bahorel", | |
| "target": "Combeferre", | |
| "value": 5 | |
| }, | |
| { | |
| "source": "Bahorel", | |
| "target": "Gavroche", | |
| "value": 5 | |
| }, | |
| { | |
| "source": "Bahorel", | |
| "target": "Courfeyrac", | |
| "value": 6 | |
| }, | |
| { | |
| "source": "Bahorel", | |
| "target": "Mabeuf", | |
| "value": 2 | |
| }, | |
| { | |
| "source": "Bahorel", | |
| "target": "Enjolras", | |
| "value": 4 | |
| }, | |
| { | |
| "source": "Bahorel", | |
| "target": "Feuilly", | |
| "value": 3 | |
| }, | |
| { | |
| "source": "Bahorel", | |
| "target": "Prouvaire", | |
| "value": 2 | |
| }, | |
| { | |
| "source": "Bahorel", | |
| "target": "Marius", | |
| "value": 1 | |
| }, | |
| { | |
| "source": "Bossuet", | |
| "target": "Marius", | |
| "value": 5 | |
| }, | |
| { | |
| "source": "Bossuet", | |
| "target": "Courfeyrac", | |
| "value": 12 | |
| }, | |
| { | |
| "source": "Bossuet", | |
| "target": "Gavroche", | |
| "value": 5 | |
| }, | |
| { | |
| "source": "Bossuet", | |
| "target": "Bahorel", | |
| "value": 4 | |
| }, | |
| { | |
| "source": "Bossuet", | |
| "target": "Enjolras", | |
| "value": 10 | |
| }, | |
| { | |
| "source": "Bossuet", | |
| "target": "Feuilly", | |
| "value": 6 | |
| }, | |
| { | |
| "source": "Bossuet", | |
| "target": "Prouvaire", | |
| "value": 2 | |
| }, | |
| { | |
| "source": "Bossuet", | |
| "target": "Combeferre", | |
| "value": 9 | |
| }, | |
| { | |
| "source": "Bossuet", | |
| "target": "Mabeuf", | |
| "value": 1 | |
| }, | |
| { | |
| "source": "Bossuet", | |
| "target": "Valjean", | |
| "value": 1 | |
| }, | |
| { | |
| "source": "Joly", | |
| "target": "Bahorel", | |
| "value": 5 | |
| }, | |
| { | |
| "source": "Joly", | |
| "target": "Bossuet", | |
| "value": 7 | |
| }, | |
| { | |
| "source": "Joly", | |
| "target": "Gavroche", | |
| "value": 3 | |
| }, | |
| { | |
| "source": "Joly", | |
| "target": "Courfeyrac", | |
| "value": 5 | |
| }, | |
| { | |
| "source": "Joly", | |
| "target": "Enjolras", | |
| "value": 5 | |
| }, | |
| { | |
| "source": "Joly", | |
| "target": "Feuilly", | |
| "value": 5 | |
| }, | |
| { | |
| "source": "Joly", | |
| "target": "Prouvaire", | |
| "value": 2 | |
| }, | |
| { | |
| "source": "Joly", | |
| "target": "Combeferre", | |
| "value": 5 | |
| }, | |
| { | |
| "source": "Joly", | |
| "target": "Mabeuf", | |
| "value": 1 | |
| }, | |
| { | |
| "source": "Joly", | |
| "target": "Marius", | |
| "value": 2 | |
| }, | |
| { | |
| "source": "Grantaire", | |
| "target": "Bossuet", | |
| "value": 3 | |
| }, | |
| { | |
| "source": "Grantaire", | |
| "target": "Enjolras", | |
| "value": 3 | |
| }, | |
| { | |
| "source": "Grantaire", | |
| "target": "Combeferre", | |
| "value": 1 | |
| }, | |
| { | |
| "source": "Grantaire", | |
| "target": "Courfeyrac", | |
| "value": 2 | |
| }, | |
| { | |
| "source": "Grantaire", | |
| "target": "Joly", | |
| "value": 2 | |
| }, | |
| { | |
| "source": "Grantaire", | |
| "target": "Gavroche", | |
| "value": 1 | |
| }, | |
| { | |
| "source": "Grantaire", | |
| "target": "Bahorel", | |
| "value": 1 | |
| }, | |
| { | |
| "source": "Grantaire", | |
| "target": "Feuilly", | |
| "value": 1 | |
| }, | |
| { | |
| "source": "Grantaire", | |
| "target": "Prouvaire", | |
| "value": 1 | |
| }, | |
| { | |
| "source": "MotherPlutarch", | |
| "target": "Mabeuf", | |
| "value": 3 | |
| }, | |
| { | |
| "source": "Gueulemer", | |
| "target": "Thenardier", | |
| "value": 5 | |
| }, | |
| { | |
| "source": "Gueulemer", | |
| "target": "Valjean", | |
| "value": 1 | |
| }, | |
| { | |
| "source": "Gueulemer", | |
| "target": "MmeThenardier", | |
| "value": 1 | |
| }, | |
| { | |
| "source": "Gueulemer", | |
| "target": "Javert", | |
| "value": 1 | |
| }, | |
| { | |
| "source": "Gueulemer", | |
| "target": "Gavroche", | |
| "value": 1 | |
| }, | |
| { | |
| "source": "Gueulemer", | |
| "target": "Eponine", | |
| "value": 1 | |
| }, | |
| { | |
| "source": "Babet", | |
| "target": "Thenardier", | |
| "value": 6 | |
| }, | |
| { | |
| "source": "Babet", | |
| "target": "Gueulemer", | |
| "value": 6 | |
| }, | |
| { | |
| "source": "Babet", | |
| "target": "Valjean", | |
| "value": 1 | |
| }, | |
| { | |
| "source": "Babet", | |
| "target": "MmeThenardier", | |
| "value": 1 | |
| }, | |
| { | |
| "source": "Babet", | |
| "target": "Javert", | |
| "value": 2 | |
| }, | |
| { | |
| "source": "Babet", | |
| "target": "Gavroche", | |
| "value": 1 | |
| }, | |
| { | |
| "source": "Babet", | |
| "target": "Eponine", | |
| "value": 1 | |
| }, | |
| { | |
| "source": "Claquesous", | |
| "target": "Thenardier", | |
| "value": 4 | |
| }, | |
| { | |
| "source": "Claquesous", | |
| "target": "Babet", | |
| "value": 4 | |
| }, | |
| { | |
| "source": "Claquesous", | |
| "target": "Gueulemer", | |
| "value": 4 | |
| }, | |
| { | |
| "source": "Claquesous", | |
| "target": "Valjean", | |
| "value": 1 | |
| }, | |
| { | |
| "source": "Claquesous", | |
| "target": "MmeThenardier", | |
| "value": 1 | |
| }, | |
| { | |
| "source": "Claquesous", | |
| "target": "Javert", | |
| "value": 1 | |
| }, | |
| { | |
| "source": "Claquesous", | |
| "target": "Eponine", | |
| "value": 1 | |
| }, | |
| { | |
| "source": "Claquesous", | |
| "target": "Enjolras", | |
| "value": 1 | |
| }, | |
| { | |
| "source": "Montparnasse", | |
| "target": "Javert", | |
| "value": 1 | |
| }, | |
| { | |
| "source": "Montparnasse", | |
| "target": "Babet", | |
| "value": 2 | |
| }, | |
| { | |
| "source": "Montparnasse", | |
| "target": "Gueulemer", | |
| "value": 2 | |
| }, | |
| { | |
| "source": "Montparnasse", | |
| "target": "Claquesous", | |
| "value": 2 | |
| }, | |
| { | |
| "source": "Montparnasse", | |
| "target": "Valjean", | |
| "value": 1 | |
| }, | |
| { | |
| "source": "Montparnasse", | |
| "target": "Gavroche", | |
| "value": 1 | |
| }, | |
| { | |
| "source": "Montparnasse", | |
| "target": "Eponine", | |
| "value": 1 | |
| }, | |
| { | |
| "source": "Montparnasse", | |
| "target": "Thenardier", | |
| "value": 1 | |
| }, | |
| { | |
| "source": "Toussaint", | |
| "target": "Cosette", | |
| "value": 2 | |
| }, | |
| { | |
| "source": "Toussaint", | |
| "target": "Javert", | |
| "value": 1 | |
| }, | |
| { | |
| "source": "Toussaint", | |
| "target": "Valjean", | |
| "value": 1 | |
| }, | |
| { | |
| "source": "Child1", | |
| "target": "Gavroche", | |
| "value": 2 | |
| }, | |
| { | |
| "source": "Child2", | |
| "target": "Gavroche", | |
| "value": 2 | |
| }, | |
| { | |
| "source": "Child2", | |
| "target": "Child1", | |
| "value": 3 | |
| }, | |
| { | |
| "source": "Brujon", | |
| "target": "Babet", | |
| "value": 3 | |
| }, | |
| { | |
| "source": "Brujon", | |
| "target": "Gueulemer", | |
| "value": 3 | |
| }, | |
| { | |
| "source": "Brujon", | |
| "target": "Thenardier", | |
| "value": 3 | |
| }, | |
| { | |
| "source": "Brujon", | |
| "target": "Gavroche", | |
| "value": 1 | |
| }, | |
| { | |
| "source": "Brujon", | |
| "target": "Eponine", | |
| "value": 1 | |
| }, | |
| { | |
| "source": "Brujon", | |
| "target": "Claquesous", | |
| "value": 1 | |
| }, | |
| { | |
| "source": "Brujon", | |
| "target": "Montparnasse", | |
| "value": 1 | |
| }, | |
| { | |
| "source": "MmeHucheloup", | |
| "target": "Bossuet", | |
| "value": 1 | |
| }, | |
| { | |
| "source": "MmeHucheloup", | |
| "target": "Joly", | |
| "value": 1 | |
| }, | |
| { | |
| "source": "MmeHucheloup", | |
| "target": "Grantaire", | |
| "value": 1 | |
| }, | |
| { | |
| "source": "MmeHucheloup", | |
| "target": "Bahorel", | |
| "value": 1 | |
| }, | |
| { | |
| "source": "MmeHucheloup", | |
| "target": "Courfeyrac", | |
| "value": 1 | |
| }, | |
| { | |
| "source": "MmeHucheloup", | |
| "target": "Gavroche", | |
| "value": 1 | |
| }, | |
| { | |
| "source": "MmeHucheloup", | |
| "target": "Enjolras", | |
| "value": 1 | |
| } | |
| ] | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment