Ich versuche, eine Wordcloud mit dem D3-Pack-Layout mit einer horizontalen Anordnung zu erstellen.D3 Circle Pack Layout mit einer horizontalen Anordnung
Anstatt die Breite zu begrenzen, beschränke ich die Höhe.
Das Packlayout verteilt automatisch die Kreise mit dem größeren in der Mitte und den anderen um ihn herum. Wenn die Höhe begrenzt ist, wird die Kreisanordnung nicht horizontal erweitert, sondern die Größe jedes Kreises verringert.
Wie kann ich verhindern, dass das Layout die Größe der Kreise ändert und mit dem Hinzufügen zu den Seiten beginnt, wenn um den größeren herum kein Platz mehr ist.
Ich möchte etwas wie folgt aus: http://imgur.com/7MDnKHF
Aber ich dies nur zu erreichen: http://jsfiddle.net/v9xjra6c/
Dies ist meine aktuellen Code:
var width,
height,
diameter,
padding,
format,
pack,
svg,
node;
var initSizes = function() {
var dimensions = { width: 900, height: 288 };
width = dimensions.width;
height = dimensions.height;
diameter = Math.min(width, height);
padding = 12;
format = d3.format(',d');
};
var initLayout = function() {
pack = d3.layout.pack()
.sort(null)
.size([width, height])
.padding(padding);
};
var createSVG = function() {
svg = d3.select('.chart-container').append('svg')
.attr('width', width)
.attr('height', height)
.attr('class', 'bubble');
};
var createBubbles = function() {
var dataset = pack.nodes(DATA);
node = svg.selectAll('.node')
.data(dataset.filter(function(d) { return !d.children; }))
.enter().append('g')
.attr('class', 'node')
.attr('transform', function(d) { return 'translate(' + d.x + ',' + d.y + ')'; });
node.append('title')
.text(function(d) { return d.name + ': ' + format(d.value); });
node.append('circle')
.attr('r', function(d) { return d.r; });
node.append('text')
.attr('dy', '.3em')
.style('text-anchor', 'middle')
.text(function(d) { return d.name.substring(0, d.r/3); });
};
initSizes();
initLayout();
createSVG();
createBubbles();
Dank!
Sie müssten das Layout dafür ändern; Die aktuelle Implementierung erlaubt es nicht, dies zu kontrollieren. –