Tôi đã thử các cách khác nhau này, nhưng không có gì có vẻ hoạt động. Dưới đây là những gì tôi hiện có:Định dạng thích hợp để vẽ dữ liệu đa giác trong D3
var vis = d3.select("#chart").append("svg")
.attr("width", 1000)
.attr("height", 667),
scaleX = d3.scale.linear()
.domain([-30,30])
.range([0,600]),
scaleY = d3.scale.linear()
.domain([0,50])
.range([500,0]),
poly = [{"x":0, "y":25},
{"x":8.5,"y":23.4},
{"x":13.0,"y":21.0},
{"x":19.0,"y":15.5}];
vis.selectAll("polygon")
.data(poly)
.enter()
.append("polygon")
.attr("points",function(d) {
return [scaleX(d.x),scaleY(d.y)].join(",")})
.attr("stroke","black")
.attr("stroke-width",2);
Tôi giả sử các vấn đề ở đây là một trong hai với cách tôi đang xác định các điểm dữ liệu như là một mảng của các đối tượng điểm cá nhân, hoặc một cái gì đó để làm với làm thế nào tôi đang viết hiện chức năng cho .attr("points",...
Tôi đã tìm kiếm trên web để xem hướng dẫn hoặc ví dụ về cách vẽ một đa giác đơn giản, nhưng tôi dường như không thể tìm thấy nó.
Cảm ơn! Tôi cần phải nghiên cứu nó, nhưng rõ ràng là giải pháp này hoạt động. Bạn có nghĩ đây là cách tốt nhất để làm một đa giác? Nó chỉ tấn công tôi như một chút vụng về để có chức năng đó trong một cấu trúc hàm. Nhưng có lẽ đó là cách nó cần phải được? Tôi đoán câu hỏi của tôi là tôi nên xây dựng các đối tượng dữ liệu theo cách này, hoặc có thể có một cách tốt hơn/sạch hơn để làm điều đó. –
Để cung cấp cho bạn một số ý tưởng khác: Nếu dữ liệu gốc sẽ là một mảng 2D với các vị trí dữ liệu được chia tỷ lệ như [[x1, y1], [x2, y2], [x3, y3]] thì chức năng điểm sẽ đơn giản hơn nhiều : function (d) {return d.join (""); }. Điều này phụ thuộc vào thực tế là ToString mặc định của Javascript cho một mảng là kết hợp chúng với dấu phẩy. Ví dụ: console.log ("" + [0,1,2]); sẽ in "0,1,2". – nautat
Xem fiddle đã sửa đổi minh họa ví dụ này: http://jsfiddle.net/4xXQT/1/ – nautat