Có triển khai tương đương với số Bubble Tree trong D3 không? Trong liên kết mà tôi đã cung cấp, Cây bong bóng đã được triển khai trong RaphaelJS và jQuery.Cây bong bóng trong d3?
Trả lời
Câu trả lời thẳng cho câu hỏi của bạn là không.
Sử dụng tài nguyên tại https://github.com/okfn/bubbletree/tree/master/build, thông tin bạn đã biết và thông tin được cung cấp trên http://d3js.org/ và thông qua tài liệu của D3 trên GitHub, bạn sẽ có thể gợi lên cây bong bóng của riêng bạn cho D3!
Đây là một mảnh của JavaScript tôi đã sử dụng một thời gian dài trước đây để hình dung dữ liệu nhị phân cây:
var updateVisual;
updateVisual = function() {
var drawTree, out;
drawTree = function(out, node) {
var col, gray, i, line, lineElt, lines, sub, _results, _results1;
if (node.lines) {
out.appendChild(document.createElement("div")).innerHTML = "<b>leaf</b>: " + node.lines.length + " lines, " + Math.round(node.height) + " px";
lines = out.appendChild(document.createElement("div"));
lines.style.lineHeight = "6px";
lines.style.marginLeft = "10px";
i = 0;
_results = [];
while (i < node.lines.length) {
line = node.lines[i];
lineElt = lines.appendChild(document.createElement("div"));
lineElt.className = "lineblock";
gray = Math.min(line.text.length * 3, 230);
col = gray.toString(16);
if (col.length === 1) col = "0" + col;
lineElt.style.background = "#" + col + col + col;
console.log(line.height, line);
lineElt.style.width = Math.max(Math.round(line.height/3), 1) + "px";
_results.push(i++);
}
return _results;
} else {
out.appendChild(document.createElement("div")).innerHTML = "<b>node</b>: " + node.size + " lines, " + Math.round(node.height) + " px";
sub = out.appendChild(document.createElement("div"));
sub.style.paddingLeft = "20px";
i = 0;
_results1 = [];
while (i < node.children.length) {
drawTree(sub, node.children[i]);
_results1.push(++i);
}
return _results1;
}
};
out = document.getElementById("btree-view");
out.innerHTML = "";
return drawTree(out, editor.getDoc());
};
Chỉ cần chèn một số yếu tố hình tròn và vận dụng nó một chút phong cách trong một dinh thự tròn và bạn nên có một chương trình tốt được thiết lập!
Bạn hiểu lầm. Một bong bóng * cây * là một cách để hình dung dữ liệu phân cấp; nó không có gì để làm với loại bong bóng. :) –
Woops; hãy để tôi chỉnh sửa bài đăng sau đó! : P – T145
Bạn có thể sử dụng the pack layout, về cơ bản bạn có thể ràng buộc bất kỳ dữ liệu nào bạn muốn các hình dạng trong biểu đồ và thông số tùy chỉnh để chúng có vị trí phù hợp với nhau. Một lựa chọn khác sẽ là bố cục lực.
Thông tin cho bạn đây. Tôi không thêm văn bản hoặc đồ trang trí, nhưng đó là thịt và khoai tây:
function bubbleChart(config) {
\t var aspectRatio = 1,
margin = { top: 0, right: 0, bottom: 0, left: 0 },
radiusScale = d3.scale.sqrt(),
scan = function(f, data, a) {
a = a === undefined ? 0 : a;
var results = [a];
data.forEach(function(d, i) {
a = f(a, d);
results.push(a);
});
return results;
},
colorScale = d3.scale.category20(),
result = function(selection) {
\t \t selection.each(function(data) {
\t \t \t var outerWidth = $(this).width(),
outerHeight = outerWidth/aspectRatio,
width = outerWidth - margin.left - margin.right,
height = outerHeight - margin.top - margin.bottom,
smallestDimension = Math.min(width, height),
sum = data[1].reduce(function(a, d) {
return a + d[1];
}, 0),
radiusFractions = data[1].map(function(d) {
return Math.sqrt(d[1]/sum);
}),
radiusNormalSum = radiusFractions.reduce(function(a, d) {
return a + d;
}, 0),
scanned = scan(function(a, d) {
return a + d;
}, radiusFractions.map(function(d) {
return d/radiusNormalSum;
}), 0);
\t \t \t radiusScale.domain([0, sum]).range([0, smallestDimension/6]);
var svg = d3.select(this).selectAll('svg').data([data]),
svgEnter = svg.enter().append('svg');
\t \t \t svg.attr('width', outerWidth).attr('height', outerHeight);
\t \t \t var gEnter = svgEnter.append('g'),
g = svg.select('g').attr('transform', 'translate(' + margin.left + ' ' + margin.top + ')'),
circleRing = g.selectAll('circle.ring').data(data[1]),
circleRingEnter = circleRing.enter().append('circle').attr('class', 'ring');
circleRing.attr('cx', function(d, i) {
return smallestDimension/3 * Math.cos(2 * Math.PI * (scanned[i] + scanned[i + 1])/2) + width/2;
}).attr('cy', function(d, i) {
return smallestDimension/3 * Math.sin(2 * Math.PI * (scanned[i] + scanned[i + 1])/2) + height/2;
}).attr('r', function(d) {
return radiusScale(d[1]);
}).style('fill', function(d) {
return colorScale(d[0]);
});
var circleMain = g.selectAll('circle#main').data([data[0]]),
circleMainEnter = circleMain.enter().append('circle').attr('id', 'main');
circleMain.attr('cx', width/2).attr('cy', height/2).attr('r', radiusScale(sum)).style('fill', function(d) {
return colorScale(d);
});
\t \t });
\t };
\t result.aspectRatio = function(value) {
\t \t if(value === undefined) return aspectRatio;
\t \t aspectRatio = value;
\t \t return result;
\t };
\t result.margin = function(value) {
\t \t if(value === undefined) return margin;
\t \t margin = value;
\t \t return result;
\t };
\t return result;
}
var myBubbleChart = bubbleChart().margin({
top: 1,
right: 1,
bottom : 1,
left: 1
});
var data = ['Random Names, Random Amounts', [['Immanuel', .4], ['Pascal', 42.9], ['Marisa', 3.3], ['Hadumod', 4.5], ['Folker', 3.2], ['Theo', 4.7], ['Barnabas', 1.0], ['Lysann', 11.1], ['Julia', .7], ['Burgis', 28.2]]];
d3.select('#here').datum(data).call(myBubbleChart);
<div class="container">
<div class="row">
<div class="col-xs-12">
<div id="here"></div>
</div>
</div>
</div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.4.11/d3.min.js"></script>
- 1. Ví dụ bong bóng D3: Bubble.nodes() làm gì?
- 2. Ẩn nhãn bong bóng trên biểu đồ bong bóng google
- 3. Tạo bong bóng trò chuyện trong Android
- 4. Bong bóng chú thích tùy chỉnh MKPinAnnotation tương tự như bong bóng chú thích mặc định
- 5. Loại bong bóng đơn giản C#
- 6. Sự kiện tùy chỉnh bong bóng xuống
- 7. D3 cây dọc tách
- 8. Dừng một sự kiện từ bong bóng trong GWT
- 9. Android Bong bóng trò chuyện triển khai trong ListView
- 10. Trình kích hoạt ItemView có gây ra bong bóng không?
- 11. Làm thế nào để làm đồ thị bong bóng?
- 12. Về bong bóng sắp xếp vs merge sort
- 13. Phân loại bong bóng được tối ưu hóa (Java)
- 14. Tại sao bong bóng sắp xếp O (n^2)?
- 15. Biểu đồ bong bóng Javascript với thanh trượt
- 16. Cách tạo kiểu công cụ WPF như bong bóng thoại?
- 17. Không thể lấy đường viền ngang trên một ScrollView trong một ViewFlipper để bong bóng lên
- 18. Sử dụng thân cây bóng ném
- 19. Cách thanh lịch nhất để sắp xếp bong bóng trong C# là gì?
- 20. Tạo một bong bóng màu/vòng tròn lập trình trong ObjectiveC và Cocoa
- 21. Thay đổi phạm vi kích thước được sử dụng trong ô bong bóng
- 22. Cách phân loại bong bóng tốt nhất trong F # là gì?
- 23. Cách tạo biểu đồ cây tương tác với d3?
- 24. Làm cách nào để có được bong bóng iPhone Copy tiêu chuẩn xuất hiện trên UIImage?
- 25. d3.js Cây thụt lề với các liên kết thẳng
- 26. Ví dụ về sử dụng phổ biến, thực tế của sự kiện bong bóng và chụp?
- 27. Tại sao không bấm nút sự kiện "bong bóng lên cây trực quan" để StackPanel như tiểu bang bài viết MSDN?
- 28. WPF WindowsFormsHost không bong bóng lên các cử chỉ chính không được xử lý
- 29. Sắp xếp chèn tốt hơn so với Sắp xếp bong bóng?
- 30. Sự kiện bong bóng rối từ itemview đến bố cục bố cục gốc?
Giả sử bạn đã tìm kiếm trên web, tôi nghĩ rằng tỷ lệ cược của câu hỏi của bạn được trả lời ở đây theo cách bạn muốn là khá mỏng. Tôi nghĩ rằng một biểu đồ bong bóng là hoàn hảo trong lĩnh vực khả năng với D3 ... Tại sao bạn không thử và bắt đầu làm một và sau đó đặt câu hỏi xung quanh những thách thức mà bạn gặp phải khi làm như vậy? – mbeasley
@mbeasley: Tôi đã bắt đầu. Nhưng tôi để câu hỏi này ở lại. Trong hầu như tất cả các câu hỏi trước đây của tôi, tôi đã rất ngạc nhiên khi ai đó chỉ cho tôi một triển khai hiện có ẩn bên trong một wiki nhỏ ở đâu đó :) – Legend
Đủ công bằng. Đảm bảo đăng liên kết tại đây để triển khai nếu bạn muốn chia sẻ nó. Thật tuyệt vời khi thấy ở D3! Chúc may mắn – mbeasley