我的数据就像
const data = [
{ name: 'Jane', age: 90 },
{ name: 'Paul', age: 20 },
{ name: 'Jerry', age: 32 },
{ name: 'Mary', age: 75 },
];
字符串
我的SVG就像
<svg>
<g data-name='Jerry'><text>Jerry</text> <text>age</text> <text class='age'>0</text></g>
<g data-name='Paul'><text>Paul</text> <text>age</text> <text class='age'>0</text></g>
<g data-name='Mary'><text>Mary</text> <text>age</text> <text class='age'>0</text></g>
<g data-name='Jane'><text>Jane</text> <text>age</text> <text class='age'>0</text></g>
</svg>
型
正如上面所看到的,data和svg不是按名称排序的。
我想保留此顺序Jerry → Paul → Mary → Jane
。但每次我尝试使用d3链接数据时,它都会以数据的顺序(jane → paul → jerry → mary
)链接
我不知道如何按照svg的顺序连接数据。:(
const svg = d3.select('svg');
svg.selectAll('.age').data(data).text(function(d){return d.age})
型
有什么办法解决吗?有线索吗?
或者这可能不是使用d3的正确或适当的方式?:(
谢谢.
1条答案
按热度按时间yjghlzjz1#
绑定数据时需要使用key函数,但是这里有两个复杂的因素:
1.由于已经有了要绑定数据的元素,因此必须检查data中的unique属性和元素的
data
属性,因为在函数第一次运行时,元素没有绑定数据。data
属性在父元素中,而不是在元素本身中,因此需要使用parentNode
:字符串
下面是包含key函数的代码:
的数据