Tôi đang sử dụng D3.js và tôi gặp sự cố khi thiết lập bố cục xếp chồng cho biểu đồ vùng có nhiều chuỗi. Tôi có hai cấu trúc có thể có của dữ liệu của tôi (nếu điều đó giúp). Một là các dữ liệu thô làm thức ăn cho kịch bản, trong cấu trúc này:Vùng xếp chồng trong D3.js
var data = [{key: 'Group1', value: 37, date: '04/23/12'},
{key: 'Group2', value: 12, date: '04/23/12'},
{key: 'Group3', value: 46, date: '04/23/12'},
{key: 'Group1', value: 32, date: '04/24/12'},
{key: 'Group2', value: 19, date: '04/24/12'},
{key: 'Group3', value: 42, date: '04/24/12'},
{key: 'Group1', value: 45, date: '04/25/12'},
{key: 'Group2', value: 16, date: '04/25/12'},
{key: 'Group3', value: 44, date: '04/25/12'},
{key: 'Group1', value: 24, date: '04/26/12'},
{key: 'Group2', value: 52, date: '04/26/12'},
{key: 'Group3', value: 64, date: '04/26/12'}]
Thứ hai là một cấu trúc lồng nhau, tạo ra sử dụng mã này:
pData = d3.nest()
.key(function(d) { return d.key; })
.map(data);
Kết quả trong cấu trúc này:
pData = {Group1: [{date: 04/23/12, key: "Group1", value: 37},
{date: 04/24/12, key: "Group1", value: 32},
{date: 04/25/12, key: "Group1", value: 45},
...],
Group2: [{date: 04/23/12, key: "Group2", value: 12},
{etc, etc, etc}],
GroupX: [...] }
Câu hỏi của tôi là: Làm cách nào để thiết lập trình tạo máy phát d3.layout.stack()
, sử dụng một trong các cấu trúc dữ liệu ở trên (hoặc một số biến thể), để tạo một đường xếp chồng lên nhau ucture cho dữ liệu của tôi như vậy mà tôi có thể vượt qua nó đến một máy phát điện khu vực tương tự như sau:
var areaGenerator = d3.svg.area()
.interpolate('monotone')
.x(function(d) { return x(d.date); })
.y0(h)
.y1(function(d) { return y(d.value); });
Vô cùng hữu ích. Cảm ơn vì sự trả lời! – mbeasley
Rất hữu ích, cảm ơn bạn! Giá trị chỉ ra Javascript noobs (như tôi!) Rằng dấu + trước d.value (trong gọi lại dữ liệu) chuyển thành một số - xem [ở đây] (http://xkr.us/articles/javascript/unary -thêm vào/). Trong gọi lại, các giá trị y0 được gán như thế nào? Tôi đã sử dụng mã [this] (http://pastebin.com/amjkBRYV) để kiểm tra và nhận được kết quả [this] (http://i.imgur.com/lQFyJNL.png) này. Mỗi đối tượng được ghi hai lần - trước và sau khi chỉnh sửa. Trước đây, nó chỉ chứa dữ liệu từ csv - sau đó, nó có "y0 = 0", như tôi đã đặt, nhưng (khi khoan xuống trong Chrome) cũng là y và số y0 khác. Có chuyện gì vậy? – scubbo
(Để tham khảo, tôi đang cố gắng điều chỉnh giá trị y0 để biểu đồ hiển thị tổng tích lũy, thay vì giá trị tại mỗi điểm) Xin lỗi nếu bạn nhận được nhiều thông báo cho các chỉnh sửa trước đó của tôi - không được sử dụng theo kiểu StackOverflow, đã thực hiện một số sai lầm! – scubbo