0
我有以下代码D3数据没有显示所有的元素
JS:
var cities = [
{ name: "Moscow", x: 585, y: 565 },
{ name: "Kiev", x: 735, y: 765 },
];
HTML:
<svg .....>
// My SVG code
</svg>
<script>
// d3.select("svg").append("text").text(cities[0].name).attr("x", cities[0].x).attr("y", cities[0].y).attr("font-size",18).attr("fill", "black");
// d3.select("svg").append("text").text(cities[1].name).attr("x", cities[1].x).attr("y", cities[1].y).attr("font-size",18).attr("fill", "black");
d3.select("svg").data(cities).enter().append("text").text(function(d) { return d.name; }).attr("x", function(d) { return d.x; }).attr("y", function(d) { return d.y; }).attr("font-size",18).attr("fill", "black");
</script>
我是新来D3。我试图将我的注释掉的代码转换成一些代码,它遍历我定义的数组。但是,我只能得到最后一个打印了未注释的代码的元素。为什么以及如何纠正?
此示例不起作用。但是,我确实找出了答案,尽管目前我还不确定它为什么可行。 d3.selectAll( “SVG”) 。数据(市) .append( “文本”) 的.text(函数(d){返回d.name;}) .attr( “X”,功能( (“fill”,“black”) .attr(“y”,function(d){return dy;}) .attr(“font-size”,18) .attr ; 你必须改变select来选择All,再加上'enter'指令。 SelectAll,因为我猜它只是选择其中一个元素。 删除.enter我不知道为什么这有所作为。 – ShaneCook
@ShaneCook更新了答案。如果'.selectAll('svg')'然后是'.append('text')',那么你创建了两个'text'元素,这些元素将会附加到'body'。 –
我的版本只适用于两个元素。答案,至少是演示版,是正确的,适用于更大的元素。非常感谢。 – ShaneCook