Skip to content

Instantly share code, notes, and snippets.

@naxxateux
Last active August 29, 2015 13:55
Show Gist options
  • Save naxxateux/8745593 to your computer and use it in GitHub Desktop.
Save naxxateux/8745593 to your computer and use it in GitHub Desktop.
{
"nodes": [{
"name": "Bitcoin",
"group": 1,
"type": "B2C",
"publicity": "-",
"connections": 1
}, {
"name": "BLE / Beacons",
"group": 1,
"type": "B2B2C",
"publicity": "-",
"connections": 0
}, {
"name": "E-commerce",
"group": 1,
"type": "B2B2C",
"publicity": "-",
"connections": 0
}, {
"name": "E-Wallets",
"group": 1,
"type": "B2C",
"publicity": "-",
"connections": 4
}, {
"name": "M-Wallets",
"group": 1,
"type": "B2C",
"publicity": "-",
"connections": 6
}, {
"name": "mPOS эквайринг",
"group": 1,
"type": "B2B",
"publicity": "-",
"connections": 4
}, {
"name": "Offline-commerce",
"group": 1,
"type": "B2B2C",
"publicity": "-",
"connections": 0
}, {
"name": "P2P-кредитование",
"group": 1,
"type": "B2C",
"publicity": "-",
"connections": 3
}, {
"name": "Payroll-проекты",
"group": 1,
"type": "B2B",
"publicity": "-",
"connections": 1
}, {
"name": "PFM -> PFP",
"group": 1,
"type": "B2C",
"publicity": "-",
"connections": 7
}, {
"name": "POS-кредитование оплаты",
"group": 1,
"type": "B2B2C",
"publicity": "-",
"connections": 1
}, {
"name": "Prepaid / Gift карты",
"group": 1,
"type": "B2B2C",
"publicity": "-",
"connections": 0
}, {
"name": "Register&Pay via Profile",
"group": 1,
"type": "B2C",
"publicity": "-",
"connections": 2
}, {
"name": "T-commerce",
"group": 1,
"type": "B2B",
"publicity": "-",
"connections": 5
}, {
"name": "Wishlist",
"group": 1,
"type": "B2C",
"publicity": "-",
"connections": 4
}, {
"name": "Агрегаторы карт (лояльности)",
"group": 1,
"type": "B2B2C",
"publicity": "-",
"connections": 2
}, {
"name": "Банк как услуга",
"group": 1,
"type": "B2B",
"publicity": "-",
"connections": 2
}, {
"name": "БКИ-онлайн",
"group": 1,
"type": "B2C",
"publicity": "-",
"connections": 1
}, {
"name": "Конструкторы онлайн-магазинов",
"group": 1,
"type": "B2B",
"publicity": "-",
"connections": 2
}, {
"name": "Краудинвестинг",
"group": 1,
"type": "B2B2C",
"publicity": "-",
"connections": 3
}, {
"name": "Краудфандинг",
"group": 1,
"type": "B2B2C",
"publicity": "-",
"connections": 1
}, {
"name": "Микрокредитование онлайн",
"group": 1,
"type": "B2C",
"publicity": "-",
"connections": 3
}, {
"name": "Обмен валют",
"group": 1,
"type": "B2C",
"publicity": "-",
"connections": 1
}, {
"name": "Онлайн-факторинг и кредитование МСБ",
"group": 1,
"type": "B2B",
"publicity": "-",
"connections": 2
}, {
"name": "Онлайн-эквайринг",
"group": 1,
"type": "B2B",
"publicity": "-",
"connections": 2
}, {
"name": "Платежи и переводы",
"group": 1,
"type": "B2B2C",
"publicity": "-",
"connections": 2
}, {
"name": "Соцсети трейдеров",
"group": 1,
"type": "B2C",
"publicity": "-",
"connections": 3
}, {
"name": "Braintree",
"group": 2,
"type": "B2B",
"publicity": "yes",
"connections": "-"
}, {
"name": "Amazon",
"group": 2,
"type": "B2C",
"publicity": "yes",
"connections": "-"
}, {
"name": "Amazon Wishlist",
"group": 2,
"type": "B2C",
"publicity": "yes",
"connections": "-"
}, {
"name": "Angel List",
"group": 2,
"type": "B2B2C",
"publicity": "-",
"connections": "-"
}, {
"name": "Apple Passbook",
"group": 2,
"type": "B2C",
"publicity": "yes",
"connections": "-"
}, {
"name": "Bancorp",
"group": 2,
"type": "B2B",
"publicity": "-",
"connections": "-"
}, {
"name": "Coin Base",
"group": 2,
"type": "B2C",
"publicity": "-",
"connections": "-"
}, {
"name": "Credit Karma",
"group": 2,
"type": "B2C",
"publicity": "-",
"connections": "-"
}, {
"name": "Dwolla",
"group": 2,
"type": "B2B2C",
"publicity": "-",
"connections": "-"
}, {
"name": "edo",
"group": 2,
"type": "B2B2C",
"publicity": "-",
"connections": "-"
}, {
"name": "ElaCarte",
"group": 2,
"type": "B2B",
"publicity": "-",
"connections": "-"
}, {
"name": "eToro",
"group": 2,
"type": "B2C",
"publicity": "-",
"connections": "-"
}, {
"name": "Ezbob",
"group": 2,
"type": "B2B",
"publicity": "-",
"connections": "-"
}, {
"name": "Facebook",
"group": 2,
"type": "B2C",
"publicity": "yes",
"connections": "-"
}, {
"name": "Facebook Wishlist",
"group": 2,
"type": "B2C",
"publicity": "yes",
"connections": "-"
}, {
"name": "Fidor Bank",
"group": 2,
"type": "B2C",
"publicity": "-",
"connections": "-"
}, {
"name": "Figlo",
"group": 2,
"type": "B2C",
"publicity": "-",
"connections": "-"
}, {
"name": "FinanceIt",
"group": 2,
"type": "B2B2C",
"publicity": "-",
"connections": "-"
}, {
"name": "Finantix",
"group": 2,
"type": "B2C",
"publicity": "-",
"connections": "-"
}, {
"name": "Go Bank",
"group": 2,
"type": "B2C",
"publicity": "yes",
"connections": "-"
}, {
"name": "Google Wallet",
"group": 2,
"type": "B2C",
"publicity": "yes",
"connections": "-"
}, {
"name": "GreenDot",
"group": 2,
"type": "B2B",
"publicity": "-",
"connections": "-"
}, {
"name": "Instabank",
"group": 2,
"type": "B2C",
"publicity": "-",
"connections": "-"
}, {
"name": "iZettle",
"group": 2,
"type": "B2B",
"publicity": "-",
"connections": "-"
}, {
"name": "Kabbage",
"group": 2,
"type": "B2B",
"publicity": "-",
"connections": "-"
}, {
"name": "KickStarter",
"group": 2,
"type": "B2B2C",
"publicity": "-",
"connections": "-"
}, {
"name": "Kreditech",
"group": 2,
"type": "B2C",
"publicity": "-",
"connections": "-"
}, {
"name": "Leaf",
"group": 2,
"type": "B2B",
"publicity": "-",
"connections": "-"
}, {
"name": "Learn Vest",
"group": 2,
"type": "B2C",
"publicity": "-",
"connections": "-"
}, {
"name": "Lending Club",
"group": 2,
"type": "B2C",
"publicity": "-",
"connections": "-"
}, {
"name": "LendUp",
"group": 2,
"type": "B2C",
"publicity": "-",
"connections": "-"
}, {
"name": "LifePAD",
"group": 2,
"type": "B2B",
"publicity": "-",
"connections": "-"
}, {
"name": "LifePay",
"group": 2,
"type": "B2B",
"publicity": "-",
"connections": "-"
}, {
"name": "Loyal3",
"group": 2,
"type": "B2C",
"publicity": "-",
"connections": "-"
}, {
"name": "Mint",
"group": 2,
"type": "B2C",
"publicity": "yes",
"connections": "-"
}, {
"name": "Money Desktop",
"group": 2,
"type": "B2C",
"publicity": "-",
"connections": "-"
}, {
"name": "Motif Investing",
"group": 2,
"type": "B2C",
"publicity": "-",
"connections": "-"
}, {
"name": "Moven",
"group": 2,
"type": "B2C",
"publicity": "-",
"connections": "-"
}, {
"name": "My-Apps",
"group": 2,
"type": "B2B",
"publicity": "-",
"connections": "-"
}, {
"name": "myWishBoard",
"group": 2,
"type": "B2C",
"publicity": "-",
"connections": "-"
}, {
"name": "PayPal",
"group": 2,
"type": "B2C",
"publicity": "yes",
"connections": "-"
}, {
"name": "Personal Capital",
"group": 2,
"type": "B2C",
"publicity": "-",
"connections": "-"
}, {
"name": "Prosper",
"group": 2,
"type": "B2C",
"publicity": "-",
"connections": "-"
}, {
"name": "Qiwi",
"group": 2,
"type": "B2C",
"publicity": "yes",
"connections": "-"
}, {
"name": "Revel",
"group": 2,
"type": "B2B",
"publicity": "-",
"connections": "-"
}, {
"name": "Second Market",
"group": 2,
"type": "B2B2C",
"publicity": "-",
"connections": "-"
}, {
"name": "Shares Post",
"group": 2,
"type": "B2B2C",
"publicity": "-",
"connections": "-"
}, {
"name": "Shopify",
"group": 2,
"type": "B2B",
"publicity": "-",
"connections": "-"
}, {
"name": "Simple",
"group": 2,
"type": "B2C",
"publicity": "-",
"connections": "-"
}, {
"name": "Smarty Pig",
"group": 2,
"type": "B2C",
"publicity": "-",
"connections": "-"
}, {
"name": "Square",
"group": 2,
"type": "B2B",
"publicity": "-",
"connections": "-"
}, {
"name": "Stripe",
"group": 2,
"type": "B2B",
"publicity": "-",
"connections": "-"
}, {
"name": "SumUP",
"group": 2,
"type": "B2B",
"publicity": "-",
"connections": "-"
}, {
"name": "The Currency Cloud",
"group": 2,
"type": "B2C",
"publicity": "-",
"connections": "-"
}, {
"name": "Transferwise",
"group": 2,
"type": "B2B2C",
"publicity": "-",
"connections": "-"
}, {
"name": "Wallla.by",
"group": 2,
"type": "B2B2C",
"publicity": "-",
"connections": "-"
}, {
"name": "Wallmob",
"group": 2,
"type": "B2B",
"publicity": "-",
"connections": "-"
}, {
"name": "Wong",
"group": 2,
"type": "B2C",
"publicity": "-",
"connections": "-"
}, {
"name": "Yodlee",
"group": 2,
"type": "B2C",
"publicity": "yes",
"connections": "-"
}, {
"name": "Zen Payroll",
"group": 2,
"type": "B2B",
"publicity": "-",
"connections": "-"
}, {
"name": "Zopa",
"group": 2,
"type": "B2C",
"publicity": "-",
"connections": "-"
}, {
"name": "Я.Деньги",
"group": 2,
"type": "B2C",
"publicity": "yes",
"connections": "-"
}],
"links": [{
"target": 26,
"source": 38,
"type": 1
}, {
"target": 26,
"source": 63,
"type": 1
}, {
"target": 26,
"source": 60,
"type": 1
}, {
"target": 3,
"source": 42,
"type": 1
}, {
"target": 3,
"source": 67,
"type": 1
}, {
"target": 3,
"source": 88,
"type": 1
}, {
"target": 3,
"source": 70,
"type": 1
}, {
"target": 0,
"source": 33,
"type": 1
}, {
"target": 17,
"source": 34,
"type": 1
}, {
"target": 21,
"source": 84,
"type": 1
}, {
"target": 21,
"source": 57,
"type": 1
}, {
"target": 21,
"source": 53,
"type": 1
}, {
"target": 22,
"source": 80,
"type": 1
}, {
"target": 7,
"source": 56,
"type": 1
}, {
"target": 7,
"source": 69,
"type": 1
}, {
"target": 7,
"source": 87,
"type": 1
}, {
"target": 12,
"source": 28,
"type": 1
}, {
"target": 12,
"source": 40,
"type": 1
}, {
"target": 4,
"source": 75,
"type": 1
}, {
"target": 4,
"source": 64,
"type": 1
}, {
"target": 4,
"source": 31,
"type": 1
}, {
"target": 4,
"source": 47,
"type": 1
}, {
"target": 4,
"source": 46,
"type": 1
}, {
"target": 4,
"source": 49,
"type": 1
}, {
"target": 9,
"source": 61,
"type": 1
}, {
"target": 9,
"source": 85,
"type": 1
}, {
"target": 9,
"source": 62,
"type": 1
}, {
"target": 9,
"source": 68,
"type": 1
}, {
"target": 9,
"source": 55,
"type": 1
}, {
"target": 9,
"source": 45,
"type": 1
}, {
"target": 9,
"source": 43,
"type": 1
}, {
"target": 14,
"source": 66,
"type": 1
}, {
"target": 14,
"source": 76,
"type": 1
}, {
"target": 14,
"source": 29,
"type": 1
}, {
"target": 14,
"source": 41,
"type": 1
}, {
"target": 20,
"source": 52,
"type": 1
}, {
"target": 19,
"source": 72,
"type": 1
}, {
"target": 19,
"source": 73,
"type": 1
}, {
"target": 19,
"source": 30,
"type": 1
}, {
"target": 25,
"source": 35,
"type": 1
}, {
"target": 25,
"source": 81,
"type": 1
}, {
"target": 15,
"source": 82,
"type": 1
}, {
"target": 15,
"source": 36,
"type": 1
}, {
"target": 10,
"source": 44,
"type": 1
}, {
"target": 5,
"source": 79,
"type": 1
}, {
"target": 5,
"source": 77,
"type": 1
}, {
"target": 5,
"source": 50,
"type": 1
}, {
"target": 5,
"source": 59,
"type": 1
}, {
"target": 23,
"source": 51,
"type": 1
}, {
"target": 23,
"source": 39,
"type": 1
}, {
"target": 8,
"source": 86,
"type": 1
}, {
"target": 24,
"source": 78,
"type": 1
}, {
"target": 24,
"source": 27,
"type": 1
}, {
"target": 13,
"source": 71,
"type": 1
}, {
"target": 13,
"source": 54,
"type": 1
}, {
"target": 13,
"source": 58,
"type": 1
}, {
"target": 13,
"source": 37,
"type": 1
}, {
"target": 13,
"source": 83,
"type": 1
}, {
"target": 18,
"source": 74,
"type": 1
}, {
"target": 18,
"source": 65,
"type": 1
}, {
"target": 16,
"source": 32,
"type": 1
}, {
"target": 16,
"source": 48,
"type": 1
}, {
"target": 67,
"source": 27,
"type": 2
}, {
"target": 32,
"source": 75,
"type": 2
}, {
"target": 48,
"source": 46,
"type": 2
}, {
"target": 42,
"source": 0,
"type": 3
}, {
"target": 67,
"source": 4,
"type": 3
}, {
"target": 67,
"source": 1,
"type": 3
}, {
"target": 67,
"source": 11,
"type": 3
}, {
"target": 67,
"source": 5,
"type": 3
}, {
"target": 67,
"source": 13,
"type": 3
}, {
"target": 70,
"source": 4,
"type": 3
}, {
"target": 70,
"source": 6,
"type": 3
}, {
"target": 34,
"source": 21,
"type": 3
}, {
"target": 34,
"source": 9,
"type": 3
}, {
"target": 84,
"source": 23,
"type": 3
}, {
"target": 75,
"source": 9,
"type": 3
}, {
"target": 31,
"source": 1,
"type": 3
}, {
"target": 47,
"source": 11,
"type": 3
}, {
"target": 46,
"source": 11,
"type": 3
}, {
"target": 66,
"source": 9,
"type": 3
}, {
"target": 76,
"source": 9,
"type": 3
}, {
"target": 35,
"source": 21,
"type": 3
}, {
"target": 79,
"source": 24,
"type": 3
}, {
"target": 77,
"source": 13,
"type": 3
}, {
"target": 77,
"source": 4,
"type": 3
}, {
"target": 77,
"source": 18,
"type": 3
}, {
"target": 27,
"source": 24,
"type": 3
}, {
"target": 18,
"source": 13,
"type": 3
}, {
"target": 18,
"source": 24,
"type": 3
}, {
"target": 26,
"source": 19,
"type": 4
}, {
"target": 3,
"source": 25,
"type": 4
}, {
"target": 0,
"source": 6,
"type": 4
}, {
"target": 0,
"source": 2,
"type": 4
}, {
"target": 0,
"source": 25,
"type": 4
}, {
"target": 7,
"source": 23,
"type": 4
}, {
"target": 12,
"source": 24,
"type": 4
}, {
"target": 12,
"source": 2,
"type": 4
}, {
"target": 14,
"source": 11,
"type": 4
}, {
"target": 14,
"source": 2,
"type": 4
}, {
"target": 20,
"source": 19,
"type": 4
}, {
"target": 6,
"source": 11,
"type": 4
}, {
"target": 1,
"source": 6,
"type": 4
}, {
"target": 1,
"source": 4,
"type": 4
}, {
"target": 2,
"source": 11,
"type": 4
}, {
"target": 15,
"source": 9,
"type": 4
}, {
"target": 10,
"source": 21,
"type": 4
}, {
"target": 10,
"source": 13,
"type": 4
}, {
"target": 5,
"source": 13,
"type": 4
}, {
"target": 5,
"source": 6,
"type": 4
}, {
"target": 5,
"source": 24,
"type": 4
}, {
"target": 8,
"source": 25,
"type": 4
}, {
"target": 24,
"source": 2,
"type": 4
}, {
"target": 74,
"source": 13,
"type": 4
}, {
"target": 74,
"source": 2,
"type": 4
}, {
"target": 16,
"source": 11,
"type": 4
}, {
"target": 16,
"source": 24,
"type": 4
}]
}
<!DOCTYPE html>
<meta charset='utf-8'>
<html>
<head>
<link href='http://fonts.googleapis.com/css?family=Roboto:100&subset=latin,cyrillic' rel='stylesheet' type='text/css'>
<style>
body {
background-color: #121b2a;
}
</style>
<script src='http://d3js.org/d3.v3.min.js'></script>
<title>Fintech Network Visualization</title>
</head>
<body>
<div id='chart' align='center'></div>
<script>
var width = 1280,
height = width / 1.4;
var colors = ['#3f99d5', '#7f489c', '#c54a9b'];
var investorsCirclesSquareMultiplier = 400,
companyRectWidth = 10,
companyRectHeight = 10;
var svg = d3.select('#chart').append('svg')
.attr('width', width)
.attr('height', height)
.style("border", "1px solid white");
var force = d3.layout.force()
.linkDistance(50)
.charge(-100)
.gravity(0.04)
.size([width, height]);
d3.json('data.json', function(error, json) {
force
.nodes(json.nodes)
.links(json.links)
.start();
var drag = force.drag()
.on('dragstart', dragstart);
var link = svg.selectAll('.link')
.data(json.links)
.enter().append('line')
.attr('class', 'link')
.attr('stroke', function(d) {
if (json.nodes[d.target.index].type === 'B2C') {
return colors[0];
} else if (json.nodes[d.target.index].type === 'B2B2C') {
return colors[1];
} else {
return colors[2];
}
})
.attr('stroke-dasharray', function(d) {
if (d.type === 2) return '5, 5';
});
var node = svg.selectAll('.node')
.data(json.nodes)
.enter().append('g')
.attr('class', 'node')
.call(drag);
node.append('circle')
.attr('r', function(d) {
return (d.group === 1 ? Math.sqrt((d.connections + 1) * investorsCirclesSquareMultiplier / Math.PI) : (d.publicity === 'yes' ? 1 : 7));
})
.attr('fill', function(d) {
if (d.type === 'B2C') {
return colors[0];
} else if (d.type === 'B2B2C') {
return colors[1];
} else {
return colors[2];
}
})
node.append('rect')
.attr('x', -companyRectWidth / 2)
.attr('y', -companyRectHeight / 2)
.attr('width', companyRectWidth)
.attr('height', companyRectHeight)
.attr('fill', function(d) {
if (d.type === 'B2C') {
return colors[0];
} else if (d.type === 'B2B2C') {
return colors[1];
} else {
return colors[2];
}
})
.attr('transform', function() {
return 'rotate(' + 45 + ',' + 0 + ',' + 0 + ')';
});
node.append('text')
.attr('fill', '#ffffff')
.attr('font-size', '12px')
.attr('text-anchor', 'start')
.attr('dominant-baseline', 'ideographic')
.attr('font-family', 'Roboto')
.text(function(d) {
return d.name
});
force.on('tick', function() {
link.attr('x1', function(d) {
return d.source.x;
})
.attr('y1', function(d) {
return d.source.y;
})
.attr('x2', function(d) {
return d.target.x;
})
.attr('y2', function(d) {
return d.target.y;
});
node.attr('transform', function(d) {
return 'translate(' + d.x + ',' + d.y + ')';
});
});
function dragstart(d) {
d3.select(this).classed('fixed', d.fixed = true);
}
});
</script>
</body>
</html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment