我有一个功能,根据正数或负数增加三角形向上或向下看。
var pointer = column
.append("polygon")
.attr("points", function (d, i) {
if (d.difference > 0)
return "0,0 -10,0 -5,-8";
else if ((d.difference < 0)) {
return "0,0 10,0 5,8";
}
})
对于小于或大于零的数字,它可以正常工作。现在我想添加一个圆圈,如果它为零。
我想知道是否可以改变&#34; polygon&#34;到&#34;圈&#34;在这种情况下作为一种元素?否则,我该如何以不同方式执行此操作?
答案 0 :(得分:0)
您可以将函数传递给.append()
而不是名称,该函数返回要追加的DOM元素。所以你可以有一个函数在一个案例中返回polygon
而在另一个案例中返回circle
。
该方法的问题在于,您需要根据所追加的元素类型设置不同的属性。因此,您需要在返回DOM元素的函数中设置这些属性,这当然是可能的,但不是非常D3。这也会使得使用D3的辅助函数变得更加困难,这对您来说可能是也可能不是问题。
替代方法是始终附加path
并适当地设置d
属性,可能使用自定义路径生成器。这将允许您使用一致的代码。