Tôi đang cố gắng để có được d3 để vẽ một biểu đồ thanh xếp chồng lên nhau duy nhất, như vậy:d3 làm thế nào để làm cho cột xếp chồng lên nhau đơn vạch
<svg width = '500' height= '100'>
<rect x='0' y='0' width='224' height='30' fill='green'/>
<rect x='224' y='0' width='84' height='30' fill='blue'/>
<rect x='308' y='0' width='29' height='30' fill='darkgray'/>
<rect x='337' y='0' width='3' height='30' fill='#606060'/>
</svg>
Như bạn thấy, vị trí x bắt đầu từ số không, sau đó mỗi vị trí x tiếp theo bằng tổng của chiều rộng trước đó.
Vì vậy, tôi đang cố gắng để có được d3 để vẽ một cái gì đó như thế từ một mảng gọi datavars:
var datavars = [224, 84, 29, 3];
... và để đảm bảo rằng d3 gán đúng chiều rộng giá trị cho đúng x có giá trị , tôi tạo ra các biến:
var prev_width0 = 0;
var prev_width1 = datavars[0];
var prev_width2 = datavars[0] + datavars[1];
var prev_width3 = datavars[0] + datavars[1] + datavars[2];
... và xác định các giá trị x như vậy:
//create SVG element
var svg = d3.select('body')
.append('svg')
.attr('width', w)
.attr('height', h);
svg.selectAll('rect')
.data(datavars)
.enter()
.append('rect')
.attr('width', function(d){
return d;})
.attr('x',function(d, i){
return 'prev_width'+i; })
.attr('y',0)
.attr('height', 30);
như bạn có thể đã đoán, hàm thụt lề mạnh (dựa trên tổng độ rộng trước đó và được xác định trong biến số prev_width
) trả về một chuỗi cho mỗi lần lặp (prev_width0, prev_width1, v.v.) và không các giá trị tôi nghĩ mình đã xác định khi tôi tạo các biến số prev_width
.
Tôi rõ ràng là xác định các biến không chính xác. Bất kỳ ý tưởng làm thế nào tôi có thể làm điều này đúng cách?
ah ... chúng rất đẹp, cảm ơn một triệu. Đề nghị đầu tiên của bạn là những gì tôi đã đấu tranh hướng tới, và một số tiếp theo là thanh lịch hơn rất nhiều. Nhiều đánh giá cao – prokaryote