내가 선택에서 동일한 데이터를 사용하여 여러 모양을 그릴려고, 그래서 내가 가진 가정 해 봅시다 오전 :D3 - 여러 개체에 동일한 데이터를 바인딩하는 방법?
여기myData = [
{
shape: 'rect',
attr: { width: 100, height: 100, x: 100, y:100 }
} , {
shape: 'circle',
attr: {cx, cy, etc...}
}
]
node.selectAll('*').data([myData]);
myData.obj.forEach(function(obj) {
// Append different shapes based on data
var shape = node.enter().append(obj.shape);
Object.keys(obj.attrs).forEach(function(attr) {
// Bind attrs to shapes based on data
shape.attr(attr, obj.attrs[attr]);
});
});
노드는 'g'요소, MYDATA는 단일 데이터 객체입니다. 내 목표는 myData를 기반으로 g 내부의 자식 셰이프를 수정하는 것이므로 나중에 다른 myData를 바인딩하고이 함수를 다시 호출하면 업데이트 할 수 있습니다. 하지만 어떻게 든 myData는 첫 번째 추가 된 모양에만 바인딩됩니다. 동일한 데이터를 여러 도형에 쉽게 바인딩 할 수있는 방법이 있습니까? 개별적으로 그 그룹 요소 모양을
groups = d3.select('body').append('svg')
.selectAll('g').data(myData).enter()
.append('g');
및 추가 :
같은 몇 가지 자습서를 참조해야 할 수 myData 샘플을 게시 하시겠습니까? –
@AdamPearce 님의 의견에 감사드립니다. myData의 구조에 대한 업데이트 된 질문을 참조하십시오. –