D3パックレイアウトのワードクラウドを水平に配置しようとしています。D3サークルパック水平配置のレイアウト
幅を制限する代わりに、高さを制限しています。
パックレイアウトは、大きなものを中央に配置し、周囲のものを自動的に配置します。高さが制限されている場合は、円の配置を水平方向に拡張するのではなく、各円のサイズを小さくします。
レイアウトを停止して円のサイズを変更し、大きいものの周囲にスペースがない場合は、それらを側面に追加する方法を教えてください。
私はこのような何かしたい: http://imgur.com/7MDnKHF
をしかし、私はこれだけを達成しています: http://jsfiddle.net/v9xjra6c/
これは私の現在のコードです:
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();
ありがとう!
このためにレイアウトを変更する必要があります。現在の実装ではこれを制御することはできません。 –