Tôi bắt đầu với d3.js và đang cố gắng tạo một hàng các nút, mỗi nút chứa một nhãn số được căn giữa.Đặt nhãn ở giữa các nút trong d3.js
Tôi có thể tạo ra kết quả mong muốn một cách trực quan, nhưng cách tôi thực hiện nó hầu như không tối ưu vì nó liên quan đến việc mã hóa cứng toạ độ x-y cho từng phần tử văn bản. Dưới đây là các mã:
var svg_w = 800;
var svg_h = 400;
var svg = d3.select("body")
.append("svg")
.attr("width", svg_w)
.attr("weight", svg_h);
var dataset = [];
for (var i = 0; i < 6; i++) {
var datum = 10 + Math.round(Math.random() * 20);
dataset.push(datum);
}
var nodes = svg.append("g")
.attr("class", "nodes")
.selectAll("circle")
.data(dataset)
.enter()
.append("circle")
.attr("class", "node")
.attr("cx", function(d, i) {
return (i * 70) + 50;
})
.attr("cy", svg_h/2)
.attr("r", 20);
var labels = svg.append("g")
.attr("class", "labels")
.selectAll("text")
.data(dataset)
.enter()
.append("text")
.attr("dx", function(d, i) {
return (i * 70) + 42
})
.attr("dy", svg_h/2 + 5)
.text(function(d) {
return d;
});
Các node
lớp là lớp tùy chỉnh CSS Tôi đã xác định riêng cho circle
yếu tố, trong khi lớp nodes
và labels
không được định nghĩa một cách rõ ràng và chúng được vay mượn từ answer này.
Như đã thấy, vị trí của mỗi nhãn văn bản được mã hóa cứng để nó xuất hiện ở giữa mỗi nút. Rõ ràng, đây không phải là giải pháp đúng.
Câu hỏi của tôi là làm thế nào tôi nên liên kết chính xác từng nhãn văn bản với mỗi vòng tròn nút động sao cho vị trí của nhãn thay đổi cùng với một vòng tròn tự động. Lời giải thích khái niệm là cực kỳ hoan nghênh với ví dụ mã.
neo chữ dường như không làm việc trực tiếp trong D3, nhưng bạn đã cố gắng một cái gì đó đơn giản như CSS text-align? Cái này cần phải dùng mẹo! http://www.w3schools.com/cssref/pr_text_text-align.asp Ngoài ra, hãy thử xem các bài đăng như thế này từ Nhóm Google d3: https://groups.google.com/forum/#!searchin/d3 -js/text-align/d3-js/M6a-97ajkWs/rHJV4_WrhX0J% 5B1-25% 5D – paxRoman
Bạn nhận được ý tưởng rằng neo văn bản không hoạt động ở đâu trong d3? –
vài tháng trước, họ đã không làm việc ... nhờ làm rõ :) tốt đẹp để xem một cách tiếp cận đơn giản cho vấn đề này – paxRoman