我尝试在D3 svg, 中添加不同的形状大小标记(例如,三角形,矩形,圆形),例如,如果级别为admin,则标记形状为圆形 如果级别为成员,标记形状为三角形 如果级别为客人,标志的形状为矩形 我尝试使用gooup.each如何在d3中添加不同的形状标记?
var groups = svg
.style("overflow", "visible")
.selectAll("g")
.data(data)
.enter()
.append("g")
.attr("transform", function(d) {return "translate(" + projection([d.lon,d.lat])+ ")";});
groups.each(function(d) {
var elem = d3.select(this);
if (d.level == "admin") {
elem.append("rect").attr("width", 5).attr("height", 5)
.style("fill",function() {
return "red";
});
}
if (d.level == "member") {
elem.append("path").attr("d", 'M 100 100 L 300 100 L 200 300 z').attr('transform','scale(0.04) translate(-150,-130)')
.style("fill",function() {
return "green";
});
}
if (d.level == "guest") {
elem.append("circle").attr("r", 4).attr('cy',2).attr('cx',2)
.style("fill",function() {return "yellow";});
}
});
但它不能显示从数据阵列的第一个数据,
从my code,你可以看到,它的无法显示数据数组中的第一个数据,但我不知道如何修改。我非常感谢你的帮助!
见本QA:https://stackoverflow.com/questions/18205034/d3-adding-data-attribute-conditionally –
另外:[*“如何直接使用数据注入到d3选择器通过.data?”](/ q/39278704 )。 – altocumulus