D3 with word cloud & RequireJS
HTML
<script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.1.17/require.min.js"></script>
JavaScript
require.config({
waitSeconds: 10,
baseUrl: 'https://cdnjs.cloudflare.com/ajax/libs',
paths: {
d3: 'd3/4.8.0/d3.min', // try 3.5.17 or 4.8.0
jquery: 'jquery/3.2.1/jquery.min',
cloud: 'd3-cloud/1.2.4/d3.layout.cloud.min'
},
shim: {
cloud: { deps:['jquery', 'd3'] }
}
});
require(['cloud', 'd3', 'jquery'], function(cloud, d3, $) {
var layout;
var fill = /^3\./.test(d3.version) ? d3.scale.category20() : d3.scaleOrdinal(d3.schemeCategory20);
function draw(words) {
d3.select("body").append("svg")
.attr("width", layout.size()[0])
.attr("height", layout.size()[1])
.append("g")
.attr("transform", "translate(" + layout.size()[0] / 2 + "," + layout.size()[1] / 2 + ")")
.selectAll("text")
.data(words)
.enter().append("text")
.style("font-size", function(d) { return d.size + "px"; })
.style("font-family", 'Impact, Charcoal, sans-serif')
.style("fill", function(d, i) { return fill(i); })
.attr("text-anchor", "middle")
.attr("transform", function(d) {
return "translate(" + [d.x, d.y] + ")rotate(" + d.rotate + ")";
})
.text(function(d) { return d.text; });
};
layout = cloud()
.size([120, 120])
.words([
"witness", "me", "we", "will", "ride", "eternal", "shiny", "and",
"chrome"].map(function(d) {
return {text: d, size: 8 + Math.random() * 20};
}))
.padding(1)
.fontSize(function(d) { return d.size; })
.on("end", draw);
layout.start();
});